C# - 如何将引用传递给需要out变量的函数?

mic*_*ael 5 c# out func out-parameters

public class Foo
{
    public void DoFoo()
    {
       int x;
       var coll = TheFunc("bar", out x);
    }

    public Func<string, int, ICollection<string>> TheFunc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

错误:"参数2不应与'out'关键字一起传递."

public class Foo
{
    public void DoFoo()
    {
       int x;
       var coll = TheFunc("bar", out x);
    }

    public Func<string, out int, ICollection<string>> TheFunc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

错误:"无效的方差修饰符.只能将接口和委托类型参数指定为变体."

如何在此函数中获取out参数?

cdh*_*wie 8

定义委托类型:

public delegate ICollection<string> FooDelegate(string a, out int b);

public class Foo
{
    public void DoFoo()
    {
       int x;
       var coll = TheFunc("bar", out x);
    }

    public FooDelegate TheFunc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 7

你需要自己制作代表:

delegate ICollection<string> MyFunc(string x, out int y);
Run Code Online (Sandbox Code Playgroud)