2013-03-31 2 views
1

Я читаю «CLR через C#» Джеффри Рихтера, и он предлагает никогда не определять методы в типе значений, которые предназначены для изменения поведения. Типы значений причин должны быть неизменными (из-за бокса/unboxing, а иногда и непредсказуемое поведение).Методы значений типов в .NET.

Итак, мы можем определить методы в нашем пользовательском типе значений только для отображения его состояния?

Можете ли вы привести какие-либо другие примеры, где необходима способность определять методы в пределах Struct?

+2

Что относительно DateTime? – Mortalus

+0

@ Mortalus ha да, увидел это сразу после того, как я закончил писать свой ответ. –

+0

Я уже удалил свой комментарий, потому что это было неправильно) Теперь я вижу –

ответ

4

Лучший пример, который я могу представить, это структура DateTime.

Все методы экземпляра по типу предназначены для создания нового DateTime манипулируя текущим (например AddMinutes) или получить дополнительную информацию от текущего DateTime (например IsDaylightSavingsTime). Она также имеет множество статических методов для создания новых экземпляров из различных входов, (например FromBinary) или как правило, манипулируя DateTime значения (например, Compare)

Ни один метод не может фактически изменять текущий экземпляр.

Смежные вопросы