2012-05-15 2 views

ответ

17

Это не имеет смысла.
Все ссылочные типы, включая Func<...>, уже могут быть null.

Несъемные типы относятся к типам значений (struct), которые обычно не могут быть null.

+0

@ bto.rdz: А? Javascript вообще не имеет принудительного применения. – SLaks

3

Func является делегатом, который является ссылочным типом. Это означает, что он уже обнуляется (вы можете передать null методу).

1

Func -> Инкапсулирует метод, который возвращает тип, заданный родовым параметром

Если тип возвращаемого значения является недействительным, Существует другой делегат (Action)

Action -> Инкапсулирует метод, который не возвращается ценность.

Если вам требуется, чтобы Func принимал параметры, которые могут принимать значение null (тип NULL), или требуется, чтобы Func возвращал значение, которое может быть нулевым (тип NULL), ограничений нет.

Для примера.

Func<int?, int?, bool> intcomparer = 
    (a,b)=> 
    { 
    if(a.HasValue &&b.HasValue &&a==b) 
     return true; 
     return false; 
    } ; 

    Func<int?, int?, bool?> nullintcomparer = 
    (a,b)=> 
    { 

    if(a.HasValue &&b.HasValue &&a==b) 
     return true; 
    if(!a.HasValue || !b.HasValue) 
     return null; 
     return false; 
    } ; 

    var result1 = intcomparer(null,null); //FALSE 
    var result2 = intcomparer(1,null); // FALSE 
    var result3 = intcomparer(2,2); //TRUE 


    var result4 = nullintcomparer(null,null); // null 
    var result5 = nullintcomparer(1,null); // null 
    var result6 = nullintcomparer(2,2); //TRUE 
+1

Он не говорит о типе возвращения. – SLaks

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