Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 C#Func(T)不接受ref类型输入参数_C# 4.0 - Fatal编程技术网

C# 4.0 C#Func(T)不接受ref类型输入参数

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

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(“字符串长度为:”+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;
}