Delegate
在类范围内声明类型与直接在命名空间范围内声明类型相比有哪些优缺点?我的意思是以下两个-
namespace MyNamespace
{
public delegate string NamespaceScopeDelegate(int x, int y);
public class ClassX
{
//class members
}
}
和,
namespace YourNamespace
{
public class ClassA
{
public delegate string ClassScopeDelegate(int x, int y);
//...
//other class members
}
}
什么样的实际场景会让我使用后一个?我的意思是它到底在哪里合适?
编辑 :
对于第一种情况,每当我需要实例化委托类型时,我可以这样做 -
var delegateInstance = new NamespaceScopeDelegate(MethodToPoint);
但对于第二种情况,我必须使用封闭类型名称作为 -
var delegateInstance = new ClassA.ClassScopeDelegate(MethodToPoint);
我为什么要这样做?第二种情况是否提供了我还不知道的任何封装?是否有任何特殊情况需要这种可访问性?