C# 具有引用参数/参数或匿名函数的Func/Action委托
我只是想知道,委托和内联lambda函数的C# 具有引用参数/参数或匿名函数的Func/Action委托,c#,delegates,lambda,inline,anonymous-function,C#,Delegates,Lambda,Inline,Anonymous Function,我只是想知道,委托和内联lambda函数的ref和out参数的确切语法是什么 这里有一个例子 如果函数定义为 public void DoSomething(int withValue) { } public void DoSomething(ref int withValue) { withValue = 3; } 函数中的委托可以通过以下方式创建: public void f() { Action<int> f2 = DoSomething;
ref
和out
参数的确切语法是什么
这里有一个例子
如果函数定义为
public void DoSomething(int withValue) { }
public void DoSomething(ref int withValue) { withValue = 3; }
函数中的委托可以通过以下方式创建:
public void f()
{
Action<int> f2 = DoSomething;
f2(3);
}
您需要为此方法签名定义新的委托类型:
delegate void RefAction<in T>(ref T obj);
public void F()
{
RefAction<int> f2 = DoSomething;
int x = 0;
f2(ref x);
}
代表无效重构(参考T obj);
公共空间F()
{
重构f2=剂量测定法;
int x=0;
f2(参考文献x);
}
.NET Framework不包含此类型的原因可能是
ref
参数不是很常见,如果为每个可能的组合添加一个委托类型,则所需类型的数量会激增。您不能使用操作
、函数
或内置委托,但在这种情况下,您需要定义自己的:
delegate void ActionByRef<T>(ref T value);
委托无效操作ByRef(参考T值);
那么,鉴于此,您可以:
int value = 3;
ActionByRef<int> f2 = DoSomething;
f2(ref value);
int值=3;
ActionByRef f2=剂量测定法;
f2(参考值);