C# 如何将方法添加到构造函数中?

C# 如何将方法添加到构造函数中?,c#,C#,我有个问题。我只知道如何使用action和func,但问题是我需要将一个方法放入这样的构造函数中 Reader read = new Reader(1000, cki, method); public static void method(int Integer) 但问题是该方法需要这样的输入 Reader read = new Reader(1000, cki, method); public static void method(int Integer) 在这种情况下我该怎么办?您可

我有个问题。我只知道如何使用action和func,但问题是我需要将一个方法放入这样的构造函数中

Reader read = new Reader(1000, cki, method);
public static void method(int Integer)
但问题是该方法需要这样的输入

Reader read = new Reader(1000, cki, method);
public static void method(int Integer)

在这种情况下我该怎么办?

您可以使用
操作
作为构造函数参数。
操作
的返回类型是
void
,泛型参数是参数类型。因此它与您的方法相匹配,该方法接受
int
并返回
void

,您不能使用方法,但是你可以用动作

public Reader(int first, object cki, Action method)
{
    //ctor code here
    method.Invoke();
}
而不是使用:

var reader = new Reader(1000, cki, () => SomeMethod(123));

似乎您正在寻找
操作
,并使用构造函数调用它,如下所示

using System;

public class Program
{
    public static void Main()
    {
        Sample s = new Sample((i) => {Console.WriteLine(i);});
    }
}

public class Sample
{
    public Sample(Action<int> method)
    {
        method(5);
    }
}
使用系统;
公共课程
{
公共静态void Main()
{
样本s=新样本((i)=>{Console.WriteLine(i);});
}
}
公共类样本
{
公众样本(行动方法)
{
方法(5);
}
}

你到底想做什么?你不能传递一个方法。是的,我看到了论点3:不能从“方法组”转换为“系统.操作”还有其他方法吗?为什么它必须是一个方法?理论上,您可以使用反射和魔术字符串,但这将是可怕的和容易出错的。你能更新你的问题吗?为什么它必须是一个方法?它说论点3:不能从“方法组”转换为“系统.操作”@Hui请尽可能把你的话放在一条评论中。这样会更干净。请阅读以下内容: