2015-01-24 6 views
-2

Когда я вступил в mscolib.dll сборка, я обнаружил, что Int32 является структурой, но я не знаю, почему мы можем применить оператор «=» к Int32, как это Int32 num=5; .it не перегружает оператор «=» внутри структуры Int32.Как работает оператор «=» с Int32 в .Net

+1

Что делает оператор '+'? –

+0

Извините, я допустил ошибку там. Это должно быть «=». – Hongyaoshun

ответ

1

Оператор = не может быть перегружен. См. Overloadable Operators. Оператор = всегда присваивает значение с правой стороны переменной с левой стороны.

Для типа значения (struct) это означает, что все значение копируется в переменную.

Для такого типа, как Int32, в процессоре есть встроенные инструкции, которые могут выполнять это копирование. Для структур, которые настолько велики, что нет инструкции, которая может сразу копировать все значение, будет цикл, который копирует байты в структуре в переменную.