1、 关于字符串的比较
在印象中,字符串比较的方式很多,至少有下列四种写法
string strA = "koffer", strB = "KoffER" ;
if(strA.ToUpper() == strB.ToUpper())
{
}
if(strA.ToUpper().Equals(strB.ToUpper()))
{
}
if(string.Equals(strA.ToUpper(),strB.ToUpper()))
{
}
if(string.Compare(strA,strB,true)==0)
{
}
使用FxCop检测出来前边三种都违反了一个叫做Avoid Unnecessary String Creation 的规则,另外,据我们的测试,即使是最后一种也违反了一条Specify CultureInfo 的规则,那么完整的写法是加上CultrueInfo 以后的,如下所示:
if(string.Compare(strA,strB,true,new System.Globalization.CultureInfo("en-US"))==0)
{
}
但是,PM建议CultrueInfo的不要去理会,因为CultrueInfo默认读取的系统格式,而且任何短期的项目都不是支持国际化的,当然产品除外(就像SAP)。
2、字符串判断为空的方法
印象中看到过的版本也比较多,例如下边4个:
if(strA == null)
{
}
if(strA == "")
{
}
if(strA == string.Empty)
{
}
if(strA.Length == 0)
{
}
但是完整的可靠的方式是什么呢?根据FxCop的建议,结论如下:
if(strA == null || strA.Length == 0)
{
}
具体什么原因就不解释了,比较简单了。
浙公网安备 33010602011771号