当我看着String.Join
方法实现,我看到了一个for循环是这样的:这是否陈述冗余或不?
public static string Join(string separator, params object[] values)
{
...
for (int index = 1; index < values.Length; ++index)
{
sb.Append(separator);
if (values[index] != null) // first if statement
{
string str2 = values[index].ToString();
if (str2 != null) // second if statement
sb.Append(str2);
}
}
...
}
这里,第二if语句似乎是多余的我。我想,如果values[index] != null
是真话,怎么可能是values[index].ToString() == null
真?据我所知ToString
总是要回报一些东西吧?即使类型不覆盖ToString
方法,它应该返回类型的完全限定名称(命名空间+类名称)。所以当我在.NET Framework源代码中看到它时,我想可能是有原因的,我错过了如果有一个原因,它是什么?
我想你可以实现的ToString和返回null –
你可以更进一步,摆脱'如果(值[指数]!= NULL)'的,太。每[MSDN](http://msdn.microsoft.com/en-us/library/5atxc566.aspx),“Append(Object)方法调用Object.ToString方法获取值的字符串表示形式。如果值是null,对StringBuilder对象不做任何更改。“所以,内部循环可能已被替换为sb.Append(separator); sb.Append(values [index]);'请注意,这两种方法之间可能存在微小的性能差异。 – Brian