以下两者之间有任何区别

use*_*949 0 .net c#

1)A a;
2)A a = null;

有什么区别吗?

Jon*_*eet 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
}
Run Code Online (Sandbox Code Playgroud)

对于字段(静态或实例),if A是引用类型,它可能没有任何区别.我可以编写一个程序来演示它是一个静态变量的情况下的差异,但是它依赖于使用反射执行静态类型初始化器两次...讨厌.

如果你能提供更多关于你问的原因的背景,那真的会有所帮助.