实际上,当我们在类中定义委托还是从委托中定义委托有什么区别?我是一个初学者,请简单解释一下。
例子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)
{
}
}
当我们在类中定义委托时,有什么区别
当您在类之外(而不是其他任何类)中定义委托时,该委托属于它在其上定义的名称空间。这意味着,如果要使用此委托,则其完整路径应如下所示:
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] 删除。
我来说两句