【问题标题】:Method defined in different class not found in program class using delegate使用委托在程序类中找不到在不同类中定义的方法
【发布时间】:2016-04-29 13:42:52
【问题描述】:

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

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;
        }
    }    
}

在我的主要方法下的程序类中,我试图创建一个委托对象并将方法 AddNum 分配给它:

NumberChanger nc1 = new NumberChanger(AddNum);

但该类中无法识别 AddNum 方法,我收到错误消息:CS0103 C# The name does not exist in the current context

谁能看出我做错了什么?

【问题讨论】:

  • new NumberChanger(lesson02.Testdelegate.AddNum);?
  • 成功了!但是为什么方法公开时必须给出全名呢?在我遵循的示例中,语法与上面完全相同。我是否需要将类引用到其他类或其他东西?在顶部添加 using 课程 02 会有帮助吗?

标签: c# delegates access-modifiers


【解决方案1】:

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

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

using static lesson02.Testdelegate;

【讨论】:

  • 不是问题,但请记住,简单的“谢谢 cmets”被认为是健谈 - 给出一些代表或标记您的问题的答案,因为正确传达了相同的意思
  • 我知道,但我必须等待一段时间才能选择你的答案,别担心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2022-01-27
  • 1970-01-01
相关资源
最近更新 更多