C# 4.0 C#Func(T)不接受ref类型输入参数
Can Func(T)接受C#中的引用类型变量C# 4.0 C#Func(T)不接受ref类型输入参数,c#-4.0,C# 4.0,Can Func(T)接受C#中的引用类型变量 static void Main() { Func方法=工作; 方法:开始试验(“试验”,0,完成,方法); // ... // } 静态整数工作(参考字符串s,整数a){返回s.Length;} 静态无效完成(IAsyncResult cookie) { var target=(Func)cookie.AsyncState; int result=target.EndInvoke(cookie); WriteLine(“字符串长度为:”+resu
static void Main()
{
Func方法=工作;
方法:开始试验(“试验”,0,完成,方法);
// ...
//
}
静态整数工作(参考字符串s,整数a){返回s.Length;}
静态无效完成(IAsyncResult cookie)
{
var target=(Func)cookie.AsyncState;
int result=target.EndInvoke(cookie);
WriteLine(“字符串长度为:”+result);
}
我无法定义可以接受ref类型输入参数的func。任何人请告知……代表不能接受ref
参数。您需要创建自己的代理类型,该类型采用
ref
参数
但是,你首先不应该在这里使用
ref
。扩展SLaks答案
Func
委托族是泛型的,允许您自定义参数和返回的类型。虽然ref
有助于C#`的类型系统,但它实际上不是CLR级别的类型:它是一个存储位置修饰符。因此,不可能使用泛型实例化来控制特定位置是否为ref
如果这是可能的,那么很容易产生完全无效的代码。考虑下面的
T Method<T>() {
T local = ...;
...
return local;
}
T方法(){
T局部=。。。;
...
返回本地;
}
现在考虑开发者如果调用<代码>方法()/<代码>会发生什么。它将产生本地值和返回值,它们是
ref
。这将导致无效的C#代码 为什么您认为您需要一个ref
参数?有关.NET4的用法…请参阅。
T Method<T>() {
T local = ...;
...
return local;
}