Код: Выделить всё
public static Int32? GetNullableInt32(Int32 num)
{
return new Nullable(num);
}
Код: Выделить всё
public static void WorksAsAdvertised()
{
dynamic thisIsAnInt32 = 42;
//Explicitly defined type (no problems)
Int32? shouldBeNullableInt32 = GetNullableInt32(thisIsAnInt32);
Console.Write(shouldBeNullableInt32.HasValue);
}
Код: Выделить всё
public static void BlowsUpAtRuntime()
{
dynamic thisIsAnInt32 = 42;
//Now I'm a dynamic{int}... WTF!!!
var shouldBeNullableInt32 = GetNullableInt32(thisIsAnInt32);
//Throws a RuntimeBinderException
Console.Write(shouldBeNullableInt32.HasValue);
}
- Почему метод mustBeNullableInt32 неявно типизируется как динамический, если возвращаемый тип GetNullableInt32 явно возвращает Nullable?
- Почему базовый тип Nullable не сохраняется? Почему вместо этого используется динамический{int}?
Подробнее здесь: https://stackoverflow.com/questions/743 ... nd-dynamic