为什么以下工作?
class A
{
public int[,] i = { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };
static void Main(string[] args)
{
}
}
Run Code Online (Sandbox Code Playgroud)
以下不是吗?
class A
{
public const int[,] i = { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };
static void Main(string[] args)
{
}
}
Run Code Online (Sandbox Code Playgroud)
它不允许为除string之外的const引用类型分配除null之外的任何其他类型.由于它是一个数组(引用),因此必须将其指定为null(?).如果它是常数并且为空,它将如何初始化?
我已经深入阅读了一些关于代理的内容,一个方法的委托可能与多播委托不同,这让人感到困惑.但是,通过反射,你可以清楚地看到,即使只有一个方法,委托确实是从一个对象派生出来的MulticastDelegate,而不是立即派生出来的Delegate.
class Program
{
public delegate void MyDelegate();
static void SomeMethod()
{
}
static void Main(string[] args)
{
MyDelegate del = null;
del = new MyDelegate(SomeMethod);
Console.WriteLine(del.GetType().BaseType.Name);
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:MulticastDelegate
我意识到a MulticastDelegate包含一个Delegate对象的调用列表.我想知道是否有可能Delegate直接创建单个,如果这样做有任何好处,除了单独调用GetInvocationList()和提取Delegate对象.