使用委托在程序类中找不到的不同类中定义的方法

时间:2016-04-29 13:42:53

标签: c# delegates access-modifiers

我已将以下类添加到我的项目中

delegate int NumberChanger(int n);

namespace lesson02
{
    class Testdelegate
    {
        static int num = 10;
        public static int AddNum(int p)
        {
            num += p;
            return num;
        }

        public static int MultNum(int q)
        {
            num *= q;
            return num;
        }

        public static int getNum()
        {
            return num;
        }
    }    
}

在main方法下的程序类中,我正在尝试创建委托的对象并将方法AddNum分配给它:

NumberChanger nc1 = new NumberChanger(AddNum);

但是在此类中无法识别AddNum方法,我收到错误消息:CS0103 C#当前上下文中不存在该名称

谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:3)

在引用不同类中的静态方法时,需要引用该类。因此,从(我推测)Program.Main开始,您应该参考Testdelegate.AddNum。编辑:这假设您在文件顶部有using lesson02;引用,或者Program或嵌套命名空间中存在lesson02

或者,如果您对静态Testdelegate成员进行多次引用,则可以使用static using(从C#6开始):

using static lesson02.Testdelegate;