1)A a;
2)A a = null;
有什么不同吗?
答案 0 :(得分:5)
对于局部变量,绝对 - 第一个没有明确赋值,第二个是。例如:
void DoesntCompile()
{
A a;
string x = a.ToString(); // Can't use a - it's not definitely assigned
}
void CompilesButGoesBang()
{
A a = null;
string x = a.ToString(); // Throws a NullReferenceException
}
对于字段(静态或实例),如果A
是引用类型,则它可能没有任何区别。我可以编写一个程序来演示它是一个静态变量的情况下的差异,但它依赖于使用反射执行静态类型初始化程序两次。讨厌。
如果你能提供更多关于你问的原因的背景,那真的会有所帮助。
答案 1 :(得分:2)