加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 代表计划

发布时间:2020-12-15 23:57:06 所属栏目:百科 来源:网络整理
导读:我做了一个非常简单的代表节目.我不知道为什么它显示错误,即使我将它与MSDN库中给出的相比,它与MSDN中的相同,仍然没有被编译..错误说 – “名称’添加’不存在在当前的上下文中“和其他方法相同..减去. 请帮我查一下有什么问题.. namespace DelegatePrac{ pu
我做了一个非常简单的代表节目.我不知道为什么它显示错误,即使我将它与MSDN库中给出的相比,它与MSDN中的相同,仍然没有被编译..错误说 – “名称’添加’不存在在当前的上下文中“和其他方法相同..减去.
请帮我查一下有什么问题..

namespace DelegatePrac
{   
   public delegate void One(int a,int b); 
    public class Some
     {
  static void Add(int a,int b)
       { 
      int c = a + b;    Console.WriteLine("{0}",c);
       }
       static void Subtract(int a,int b)
       { int c = a - b;  Console.WriteLine("{0}",c);
       }

    }

    class Program
    {
        static void Main(string[] args)
        {
            One o1,o2;
            o1 = Add;//gives error here
            o2 = Subtract;//and here!!
            o1(33,44);
            o2(45,15);
         Console.ReadLine();
        }
    }
}

我正在关注此链接-http://msdn.microsoft.com/en-us/library/ms173175.aspx

谢谢

解决方法

您应该看到编译器消息:

The name ‘Add’ does not exist in the current context

它告诉你,它不知道你在谈论哪种Add方法;添加是一些静态方法 – 所以你需要:

o1 = Some.Add;
o2 = Some.Subtract;

静态方法不是全局可用的;您可以通过它们的名称从当前类型(和基类型)访问静态方法,但如果它是不相关的类型,则需要使用声明类型对其进行限定.

此时它会给你一个编译器错误:

‘DelegatePrac.Some.Add(int,int)’ is inaccessible due to its protection level

这暗示它是一种私人方法;所以向他们添加公共(或内部):

public static void Add(int a,int b) {...}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读