为了完整起见,这里有几个 Linq 答案:
var stringsOmittingFirstIfEmpty = temp3.Skip(temp3[0] == "" ? 1 : 0);
var stringsOmittingFirstIfEmpty = temp3.Skip(string.IsNullOrEmpty(temp3[0]) ? 1 : 0);
var stringsOmittingFirstIfEmpty = temp3.Skip(1-Math.Sign(temp3[0].Length)); // Yuck! :)
我认为我实际上不会使用其中任何一个(尤其是最后一个,这真是个笑话)。
我可能会去:
bool isFirst = true;
foreach (var item in temp3)
{
if (!isFirst || !string.IsNullOrEmpty(item))
{
// Process item.
}
isFirst = false;
}
或者
bool isFirst = true;
foreach (var item in temp3)
{
if (!isFirst || item != "")
{
// Process item.
}
isFirst = false;
}
甚至
bool passedFirst = false;
foreach (var item in temp3)
{
Contract.Assume(item != null);
if (passedFirst || item != "")
{
// Process item.
}
passedFirst = true;
}