这些声明之间有什么区别吗?
Animal animal;
Animal animal1 = null;
最佳答案
不,没有显着差异。最后,在运行时,您将有一个名为animal
的变量,其类型为Animal
,在定义时其值将为null
,然后在逻辑上将其值设置为非null
值,以便使用它。
但是,有些人会选择第一个而不是第二个声明,反之亦然。此外,有人会认为在第二种情况下null
的分配是多余的。例如,如果您使用ReSharper,我想您会注意到一条消息,提示在那里设置null
是多余的。
最后,但并非最不重要的一点是,我想您定义了一个Animal
类型的变量,以后再尝试设置它的值(我指的是第一种情况)。如果是这样,您就处于良好状态。否则,如果您具有以下片段:
Animal animal;
if(animal==null)
{
}
您可能会在编译前收到警告,并收到以下说明的编译错误:
使用未分配的局部变量“动物”
如果仅声明变量而从未使用过变量,则将得到以下警告:
声明了“动物”变量,但从未使用过
以上所有都是针对局部变量的情况,如果我们使用的是类变量,那么情况就有些不同了。如果创建控制台应用程序,并且具有以下代码段:
class Program
{
static Animal animal;
static void Main(string[] args)
{
if(animal==null)
{
}
}
}
您不会收到任何编译错误。您只会收到带有以下说明的警告:
Field 'Program.animal' is never assigned to, and will always have its default value null
关于c# - 这些声明之间有什么区别1类objClass;和2类objClass = null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982669/