在为委托变量分配委托函数时,为什么必须声明参数类型?

时间:2016-02-11 12:01:25

标签: c# types delegates

说我有这样的代表。

namespace somedelegatesb1  {
    class Program  {
        delegate int Abc(int a);
        static void Main(string[] args)  {
            Abc abc = delegate(int e) {  
              return 0; 
            };
        }

    }
}

为什么我必须编写参数int e,这里是

Abc abc = delegate(int e) {  
                  return 0; 
                };

为什么我不能写

Abc abc = delegate(e) {  
                  return 0; 
          };

它不会编译,但它是否“显而易见”它是否会被编入?它还会是什么?除了int之外,不可能是其他任何东西,因为委托需要int e。

假设我没有使用参数,即该函数将采用参数,但表示不会使用该变量。那是完全没有意义的。为什么我不能写

Abc abc = delegate {  
                  return 0; 
          };

即使我使用的是参数..变量名也不一定与javascript相关,你可以说参数[0]。那么为什么不允许Abc abc = delegate {...};

我知道C#是严格类型的,但我并不是在委托之后写类型时改变类型。而且我并不是建议c#允许传递比定义更多或更少的参数。编写类型只是多余的。在某些情况下甚至变量名也不是必需的。如果不使用它,虽然人们通常会使用它,所以我可以看出为什么他们可能会强制要求,但肯定这里的类型是绝对不必要的和毫无意义的。那么为什么C#似乎需要它?

0 个答案:

没有答案