Книга: C# для профессионалов. Том II
Оператор присваивания (=)
Оператор присваивания (=)
Для простых типов данных = просто копирует данные. Однако при определении своих собственных классов C++ считает в большой степени, что обязанность разработчика указать значение =
для этих классов. По умолчанию в C++ =
требует поверхностного почленного копирования всех переменных, классов или структур. Однако программисты перезагружают этот оператор для выполнения более сложных операций присваивания.
В C# правила, определяющие, что означает оператор присваивания, значительно проще. Вообще не разрешается перезагружать =, его значение неявно определено во всех ситуациях.
Ситуация в C# будет следующая:
? Для простых типов данных =
просто копирует значения, как в C++.
? Для структур =
делает поверхностное копирование структуры — прямую копию памяти данных в экземпляре структуры. Это аналогично поведению в C++.
? Для классов =
копирует ссылку, то есть адрес, а не объект. Это не соответствует поведению в C++.
Если требуется скопировать экземпляры классов, обычный способ в C# состоит в переопределении метода MemberwiseCopy()
, который все классы в C# по умолчанию наследуют из класса System.Object
— общего класса-предка, из которого неявно выводятся все классы C#.
- Арифметические операторы
- A7.11. Оператор побитового И
- Оператор получения типа typeof
- Операторы в Python
- Операторы
- Операторы присваивания
- Оператор break
- Оператор цикла с предусловием while
- Побитовые операторы
- 4.1.2. Арифметические операторы присваивания
- Типы, характеризуемые значениями, ссылочные типы и оператор присваивания
- Оператор присваивания