В C# тип Nullable<T>
не удовлетворяет общему ограничению where
struct
(в то время как AFAK технически является структурой). Это можно использовать, чтобы указать, что общий аргумент должен быть типом значения, не допускающим значение NULL:
T DoSomething<T>() where T : struct
{
//...
}
DoSomething<int?>(); //not ok
DoSomething<int>(); //ok
И, конечно же, Nullable<T>
также не удовлетворяет ограничению ссылочного типа where
class
:
T DoSomething<T>() where T : class
{
//...
}
DoSomething<int?>(); //not ok
DoSomething<Foo>(); //ok
Возможно ли определить ограничение, которое должно быть ссылочным типом или типом значения, но не типом значения, допускающим значение Null?
Что-то вроде этого :
void DoSomething<T>() where T : class, struct //wont compile!
{
//...
}
DoSomething<int?>(); //not ok
DoSomething<int>(); //ok
DoSomething<Foo>(); //ok
Nullable<T>
? Это сложно. - person Vitor Canova   schedule 11.02.2015Add<TValue>(Func<TViewModel, TValue> expression)
, и я хотел бы убедиться, что он используется только с типами, не допускающими значение NULL (например:Add(x => x.Id)
OKAdd(x => x.CreationDate.Value)
OKAdd(x => x.CreationDate)
NOK ). - person tigrou   schedule 11.02.2015