在C#类构造函数中作为参数委派

res*_*sgh 2 c# constructor delegates pass-by-reference

嗨我有一个代理作为参数的类,如代码所示,但我得到错误"错误1类型预期...\Classes\Class1.cs 218 33类"和"错误2;预期......\Classes\Class1.cs 218 96 Classes".我该如何解决这个问题?提前致谢!我试图传递它byref所以当一个类初始化时,它的一些方法附加到委托.

public constructor(ref delegate bool delegatename(someparameters))
{
    some code
}
Run Code Online (Sandbox Code Playgroud)

现在什么都没有,它有效,tkx

DeC*_*Caf 5

您不能在构造函数中声明委托类型.您需要首先声明委托类型,然后您可以在构造函数中使用它:

public delegate bool delegatename(someparameters);

public constructor(ref delegatename mydelegate)
{
   some code...
}
Run Code Online (Sandbox Code Playgroud)


kpr*_*bst 5

你可以通过类似的东西Action<T>......不知道为什么你想通过引用传递它.例如,您可以使用以下方法:

static void Foo(int x, Action<int> f) {
    f(x + 23);
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

int x = 7;
Foo(x, p => { Console.WriteLine(p); } );
Run Code Online (Sandbox Code Playgroud)

  • 在他的情况下,它看起来像 `Func&lt;..., bool&gt;` 可能更合适。 (2认同)