6

C#では、メソッドにnull可能なFuncを渡すことは可能ですか?

どちらFunc<A, bool>?も機能していませんFunc?<A, bool>

4

4 に答える 4

18

それは意味がありません。
を含むすべての参照型は、Func<...>すでに である可能性がありますnull

structNull 許容型は、通常はできない値型に適用されますnull

于 2012-05-15T14:45:45.767 に答える
5

Func は、参照型であるデリゲートです。これは、すでに null 可能であることを意味します (メソッドに null を渡すことができます)。

于 2012-05-15T14:47:36.067 に答える
2

Func- >汎用パラメーターで指定された型を返すメソッドをカプセル化します

リターンタイプが無効の場合、別のデリゲートがあります(アクション)

アクション->値を返さないメソッドをカプセル化します。

Funcがnull(null許容型)を受け入れることができるパラメーターを受け入れるように要求する場合、またはFuncがnull(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
于 2012-05-15T14:57:29.243 に答える