Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对null和string.Empty使用==或.Equals()_C#_Null_String - Fatal编程技术网

C# 对null和string.Empty使用==或.Equals()

C# 对null和string.Empty使用==或.Equals(),c#,null,string,C#,Null,String,关于在字符串上使用.Equals()或=,这里有一个关于检查string.Empty和null对象的问题 在比较string.Empty和null对象时,我应该使用=还是应该使用.Equals() //向实例变量添加变量 for(int i=0;i

关于在字符串上使用
.Equals()
=
,这里有一个关于检查
string.Empty
null
对象的问题

在比较
string.Empty
null
对象时,我应该使用
=
还是应该使用
.Equals()

//向实例变量添加变量
for(int i=0;i
另外,我知道最好将
null
string.Empty
存储为它们的对象类型,但出于这个特殊目的,我的要求是将它们存储为字符串表示:)


p.p.S.为了澄清问题,添加了匈牙利符号

如果您担心
null
,您应该使用,或者

您应该总是喜欢==而不是
Equals
。后者是基本
对象
类型的一种方法,在这种情况下,它将执行无用的强制转换

如果要检查
字符串
值是否为null或空,请使用方法。相反,如果你需要采取不同的行动,如果是一个或另一个,那么请执行以下操作:

if (value == null)
{
    //do stuff
}
else if (value == string.Empty)
{
    // do other stuff
}
编辑:


正如注释中指出的,在接收
字符串
参数的
字符串上有一个重载的
Equals
方法。不过,我认为您应该养成使用==的习惯。这个问题并不清楚,首先你说的是
String.Empty
null
,然后你加了
“Empty”
“null”
。而且你的
P.S
更让人困惑。@Tim:我相信PS正在回答你的问题。他说的是,他存储的不是
null
,而是
“null”
,虽然他知道应该将它们存储为对象类型(即
null
),但他将它们存储为字符串表示(即
“null”
)。他的检查在string.empty和null上运行,所以我不知道你为什么担心他在列表中放了什么。@SriramSakthivel:这有关系吗?正如标题所说,我们所看到的是,“对null和string.Empty使用==或.Equals()。他在列表中放了什么,什么类型似乎与我无关…@Chris Nevermind,由于糟糕的命名约定造成的混乱:请记住,如果您尝试调用
s.Equals(null)
s
实际上是
null
时,您将得到一个
NullReferenceException
@Chris我觉得这只是一个示例代码。@Chris但这也不是问题,因为与null比较不再必要,他可以做类似
if(string.IsNullOrEmpty(stringVar)){if(stringVar.Equals)的事情(字符串为空){….
这样也能抓住这个案子seperately@DrCopyPaste:是的,有很多方法可以解决这个问题,但是问题的标题说它是关于使用
==
.Equals
的优点的。一个不包括这两种用途的答案肯定离回答这个问题还差得远……我要指出的是我建议将此方法作为补充说明使用,我没有问题,我只是不相信这是一个有效的答案(尽管投票似乎不同意我的观点)是的!单独检测很重要。“后者是基本对象类型的方法。”为了使其显式化,它被覆盖(因此也是一个值比较)还有一个重载,它接受一个
String
参数。谢谢,增加了一个额外的精度。String中没有装箱/拆箱,因为String是一种引用类型。我仍然很困惑——使用
value==String.Empty
value.Equals(String.Empty)更好
?@绿色卷心菜这适用于许多语言,例如Java,但C#知道运算符重载,实际上,==对字符串重载。因此,除了可读性和可理解性之外,C#中的==和Equals之间绝对没有区别
if (value == null)
{
    //do stuff
}
else if (value == string.Empty)
{
    // do other stuff
}