Trong C# có thể vượt qua một phương thức Func không có giá trị không?Nullable Func <T, TResult>
Không Func<A, bool>?
cũng không Func?<A, bool>
đang hoạt động.
Trong C# có thể vượt qua một phương thức Func không có giá trị không?Nullable Func <T, TResult>
Không Func<A, bool>?
cũng không Func?<A, bool>
đang hoạt động.
Điều đó không có ý nghĩa.
Tất cả các loại tham chiếu, bao gồm Func<...>
, có thể là null
.
Loại dễ vỡ áp dụng cho các loại giá trị (struct
s), không thể thông thường là null
.
Func là đại biểu là loại tham chiếu. Điều này có nghĩa là nó đã được vô hiệu (bạn có thể truyền null cho một phương thức).
Func -> Đóng gói một phương thức trả về một kiểu xác định bởi tham số chung
Nếu kiểu trả về là void, còn có một đại biểu khác nhau (hành động)
Action -> Đóng gói một phương pháp mà không trả lại một giá trị.
Nếu bạn yêu cầu Func chấp nhận tham số có thể chấp nhận null (loại có thể loại bỏ) hoặc yêu cầu Func trả về giá trị có thể là rỗng (loại có thể nhập), không có giới hạn.
Ví dụ.
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
Anh ấy không nói về kiểu trả về. – SLaks
@ bto.rdz: Huh? Javascript không có thực thi loại nào cả. – SLaks