Когда у нас есть две структуры, и одна из них неявно преобразуется в другую, тогда кажется, что System.Nullable
версии этих двух также неявно конвертируемый. Например, если структура A
имеет неявное преобразование в структуру B
, то A?
также преобразуется в B?
.
Вот пример:
struct MyNumber
{
public readonly int Inner;
public MyNumber(int i)
{
Inner = i;
}
public static implicit operator int(MyNumber n)
{
return n.Inner;
}
}
Внутри некоторого метода:
MyNumber? nmn = new MyNumber(42);
int? covariantMagic = nmn; // works!
В спецификации языка C# версии 4.0 мы читаем, что подобное преобразование должно существовать для "предопределенных неявных идентификаторов и числовых преобразований".
Но безопасно ли предположить, что он также будет работать для пользовательских неявных преобразований?
(Этот вопрос может быть связан с этой ошибкой: http://connect.microsoft.com/VisualStudio/feedback/details/642227/)