当我们在类中定义委托时,有什么区别呢?

贝南

实际上,当我们在类中定义委托还是从委托中定义委托有什么区别?我是一个初学者,请简单解释一下。

例子1

namespace Delegate
{
    public delegate int Calculate(int value1, int value2);
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

例子2

class Program
{
    public delegate int Calculate(int value1, int value2);
    static void Main(string[] args)
    {
    }
}
尤瓦尔·伊察科夫(Yuval Itzchakov)

当我们在类中定义委托时,有什么区别

当您在类之外(而不是其他任何类)中定义委托时,该委托属于它在其上定义的名称空间。这意味着,如果要使用此委托,则其完整路径应如下所示:

namespace ConsoleApplication1
{
    class Program
    {
        static void H()
        {
            MyDelegate.Calculate y = (x, w) => 1;
        }
    }
}

namespace MyDelegate
{
    public delegate int Calculate(int value1, int value2);
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

与将其公开在类中相反,您的路径将包含定义委托的实际类:

namespace ConsoleApplication1
{
    class Program
    {
        static void H()
        {
            MyDelegate.Program.Calculate y = (x, w) => 1;
        }
    }
}

namespace MyDelegate
{   
    class Program
    {
        public delegate int Calculate(int value1, int value2);
        static void Main(string[] args)
        {
        }
    }
}

编辑:

作为@MatthewWatson在评论中指出,作为delegate是一种类型,它通常应在命名空间级别上声明,如Action<T>Func<T>是在.NET框架。如果要实现一个在类层次结构内部使用的委托,则可以将其放置在类中并将其设置为protected我确实建议使用.NET框架公开并满足大多数要求的上述委托。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我们进行运算符重载时,这两段代码有什么区别?

当我们使用带有-symbol 或--symbol 的命令时有什么区别?

当我们总是从uvm_sequence_item扩展时,为什么要使用uvm_transaction类呢?

Raku中的“我的”和“我们的”有什么区别?

Perl中的“我的”和“我们的”有什么区别?

当我们使用数组名称而不是传播运算符时有什么区别?

当我们在Python的类中给出函数定义时会发生什么

当我们有包装器类时,为什么要支持原语?

既然我们有多播委托,为什么还需要事件呢?

我们应该在c ++类中指定“ private”标签吗?有什么区别吗?

当我们有多个目标时,LASSO在sklearn中的目标函数是什么?

当我们有函数和 lambdas 时,C++ 中的“块”是什么?

当我们在方法类中拥有私有属性时,为什么要使用final作为修饰符

当我们拥有currentThread()方法时,为什么Thread类具有静态方法?

当我想清空python中称为a的列表时,del a [:]和a = []有什么区别?

.ts和.tsx扩展名有什么区别。两者都用作react中的打字稿文件的扩展名。那么我们应该在哪里使用它们呢?

当我们要私有继承基类时,为什么要进行名称公开?

在类映射中,当我们有迭代器时,const_iterator的必要性是什么?

为什么我们通常使用|| 超过|?有什么区别?

当我们可以在函数主体中定义变量时,为什么在函数中使用参数?

为什么我们有时将行为与Java中的类分开

我们声明结构的两种方式有什么区别?

当我们可以简单地分配它时,为什么在python中使用内置的copy()函数呢?

当我们有一个红色区域时,为什么我们需要堆栈分配?

当我们在同一类中创建类的实例时会发生什么?

为什么我们需要定义类的静态变量,而在函数内部不定义静态变量呢?

当我们在webservice.asmx.cs中编写所有代码时,webservice.asmx的用途是什么?

当我们规避SQL Server对UDF中的副作用操作的限制时,会有什么风险?

当我们在C ++中没有合适的左值时,应该以int&返回什么?