gpt4 book ai didi

c# - 这些声明之间有什么区别1类objClass;和2类objClass = null

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:09 24 4
gpt4 key购买 nike

这些声明之间有什么区别吗?

 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com