Книга: C# для профессионалов. Том II

Оператор присваивания (=)

Оператор присваивания (=)

Для простых типов данных = просто копирует данные. Однако при определении своих собственных классов C++ считает в большой степени, что обязанность разработчика указать значение = для этих классов. По умолчанию в C++ = требует поверхностного почленного копирования всех переменных, классов или структур. Однако программисты перезагружают этот оператор для выполнения более сложных операций присваивания.

В C# правила, определяющие, что означает оператор присваивания, значительно проще. Вообще не разрешается перезагружать =, его значение неявно определено во всех ситуациях.

Ситуация в C# будет следующая:

? Для простых типов данных = просто копирует значения, как в C++.

? Для структур = делает поверхностное копирование структуры — прямую копию памяти данных в экземпляре структуры. Это аналогично поведению в C++.

? Для классов = копирует ссылку, то есть адрес, а не объект. Это не соответствует поведению в C++.

Если требуется скопировать экземпляры классов, обычный способ в C# состоит в переопределении метода MemberwiseCopy(), который все классы в C# по умолчанию наследуют из класса System.Object — общего класса-предка, из которого неявно выводятся все классы C#.

Оглавление книги

Оглавление статьи/книги

Генерация: 0.454. Запросов К БД/Cache: 0 / 2
поделиться
Вверх Вниз