Когда я смотрел 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
true, то как может быть values[index].ToString() == null
true? Насколько мне известно, ToString
всегда нужно что-то возвращать, верно? Даже если тип не переопределяет метод ToString
, он должен возвращать полное имя типа Type (Namespace + имя класса). Поэтому, когда я вижу его в исходном коде .NET Framework, я подумал, что, может быть, есть причина, и я пропускаю что-то. Если есть причина, что это такое?