C#では、メソッドにnull可能なFuncを渡すことは可能ですか?
どちらFunc<A, bool>?
も機能していませんFunc?<A, bool>
。
それは意味がありません。
を含むすべての参照型は、Func<...>
すでに である可能性がありますnull
。
struct
Null 許容型は、通常はできない値型に適用されますnull
。
Func は、参照型であるデリゲートです。これは、すでに null 可能であることを意味します (メソッドに null を渡すことができます)。
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