根据C# 参考
“null 关键字是表示空引用的文字,它不引用任何对象。null 是引用类型变量的默认值”
我惊讶地发现以下应用程序代码中的
Commentinge=null
行(取自文章“C# 中的事件和委托之间的差异”)导致编译错误:
Use of unassigned local variable 'e'
而没有评论它被编译并运行。
我不明白:
- 变量在哪里
e
使用? - 是否可以在不将变量分配给哑巴的情况下强制应用程序运行
null
?
F
using System;
class Program
{
static void Main(string[] args)
{
DelegatesAndEvents obj = new DelegatesAndEvents();
obj.Execute();
}
}
public class DelegatesAndEvents
{
public event EventHandler MyEvent;
internal void Execute()
{
EventArgs e;
//Commenting the next line results in compilation error
//Error 1 Use of unassigned local variable 'e'
e = null;
int sender = 15;
MyEvent += MyMethod;
MyEvent += MyMethod2;
MyEvent(sender, e);
}
void MyMethod(object sender, EventArgs e)
{
Console.WriteLine(sender);
}
void MyMethod2(object sender, EventArgs e)
{
Console.WriteLine(sender);
Console.ReadLine();
}
}
更新(或对所有答案的评论):
所以,我从来不知道,有一种空值 - 一个是分配的,另一个是未分配的......有趣......
他们可能应该有不同的类型,用于检查:
if typeof(unassigned-null) then do this;
如果 typeof(assigned_null) 则执行此操作;