Err*_*Efe 4 c# task-parallel-library
我正在使用新的任务并行库,今天就是这个案例:
此代码无法编译:
internal Task<Guid?> SavePages(string[] pages)
{
return Task.Run(() =>
{
if (pages == null || pages.Length == 0)
return null;
....
Run Code Online (Sandbox Code Playgroud)
除非我显式返回一个null可为空的Guid:
internal Task<Guid?> SavePages(string[] pages)
{
return Task.Run(() =>
{
if (pages == null || pages.Length == 0)
return (Guid?)null;
// Check documents path access
Run Code Online (Sandbox Code Playgroud)
为什么这种行为,我做错了什么?我的意思是,我得到代码使用第二个选项,但不知道如果我滥用库,我的意思是,null总是为空,不是吗?
编译错误:
无法将lambda表达式转换为委托类型'System.Func',因为块中的某些返回类型不能隐式转换为委托返回类型
这与编译器确定lambda类型的方式有关.返回plain时null,编译器唯一可以暗示的是返回一个对象.因此,您的无参数lambda兼容Task<object>.但是,函数的签名表示您正在返回Task<Guid?>,因此编译器从您的代码中隐含的返回类型不兼容.当你把它null转换为时Guid?,你为编译器提供了一个缺少的线索,使lambda成为a Task<Guid?>.
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |