2013-10-04 7 views
1

Я читал на Дисперсионный в .NET на: http://msdn.microsoft.com/en-us/library/dd799517.aspxРабота с переменным в .NET может ли вы использовать типы значений, чтобы избежать их инвариантности?

Я наткнулся на эту строку: Variance applies only to reference types; if you specify a value type for a variant type parameter, that type parameter is invariant for the resulting constructed type.

Почему это? И не можем ли мы «вставить» тип значения в ссылочный тип или это вызовет дополнительные проблемы?

Я только НАСТОЯТЕЛЬНО начинаю понимать концепцию дисперсии, поэтому мое понимание этого очень элементарно/неполно.

ответ

2

Если вы считаете, что тип значения

не может наследовать от другого структуры

http://msdn.microsoft.com/library/ah19swz4%28v=vs.90%29.aspx

это не имеет никакого смысла говорить о дисперсии для них. Если вы помещаете его в ссылочный тип, какой тип вы думаете использовать, кроме объекта? Вы должны определить неявное или явное приведение к ссылочному типу, но для чего стоит?

Разница заключается в полиморфизме и наследовании. Учтите, что когда вы назначаете int переменной типа long, у вас есть неявный листинг: между двумя типами нет отношения наследования.

+0

Правильно, теперь имеет смысл понять, почему он не подразумевает типы значений полей. Я не рассматривал правила наследования для них, но это был ответ, который я искал, чтобы помочь мне разобраться в путанице. – BenM

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

  • Нет связанных вопросов^_^