C# 委托返回类型对象不接受返回Guid的函数
返回以下函数时C# 委托返回类型对象不接受返回Guid的函数,c#,C#,返回以下函数时 public Guid GetUserFilterValue( string filterID ) 作为 Func 我得到的错误是,它有错误的返回类型。如果我将返回类型更改为Guid以外的任何类型,它将编译。有什么想法吗?那是因为Guid是一个二进制表示,因此没有与对象兼容的二进制表示。如果需要使此方法适应给定的签名,则需要将Guid写入对象的包装函数: Func<string, object> f = s => (object)GetUserFilterV
public Guid GetUserFilterValue( string filterID )
作为
Func
我得到的错误是,它有错误的返回类型。如果我将返回类型更改为Guid以外的任何类型,它将编译。有什么想法吗?那是因为
Guid
是一个二进制表示,因此没有与对象
兼容的二进制表示。如果需要使此方法适应给定的签名,则需要将Guid
写入对象的包装函数:
Func<string, object> f = s => (object)GetUserFilterValue(s);
Func f=s=>(对象)GetUserFilterValue(s);
如果返回类型是引用类型,这通常会起作用,因为Func
对于T是协变的;但是Guid
是一种值类型,这就是为什么您的方法不是Func
的有效候选方法
发件人:
差异仅适用于引用类型;如果为变量类型参数指定值类型,则该类型参数对于生成的构造类型是不变的
作为解决方法,可以使用lambda表达式:
Func<string, object> f = filterId => GetUserFilterValue(filterId);
Func f=filterId=>GetUserFilterValue(filterId);
Func<string, object> f = filterId => GetUserFilterValue(filterId);