先从reference到last item取一个值,然后在foreach循环中进行比较,怎么样?I am not say that you should do this as I myself would use the index based loop as mentioned by KlauseMeier.很抱歉,我不认识Ruby,所以下面的示例是C#!希望你不介意:-)
string lastItem = list[list.Count - 1];
foreach (string item in list) {
if (item != lastItem)
Console.WriteLine("Looping: " + item);
else Console.Writeline("Lastone: " + item);
}
我修改了以下代码,以按引用而不是值进行比较(只能使用引用类型而不是值类型).下面的代码应该支持包含相同字符串(但不是相同字符串对象)的多个对象,因为MattChurcy的示例没有指定字符串必须是不同的,我使用了LINQ Last方法,而不是计算索引.
string lastItem = list.Last();
foreach (string item in list) {
if (!object.ReferenceEquals(item, lastItem))
Console.WriteLine("Looping: " + item);
else Console.WriteLine("Lastone: " + item);
}
上述代码的局限性.(1) 它只能用于字符串或引用类型,不能用于值类型.(2) 同一对象只能在列表中出现一次.可以有包含相同内容的不同对象.文字字符串不能重复使用,因为C#不会为具有相同内容的字符串创建唯一的对象.
我也不傻.我知道应该使用基于索引的循环.当我第一次发布最初的答案时,我已经说过了.在这个问题的context个答案中,我给出了最好的答案.我太累了,无法继续解释这个问题,所以你们可以投票删除我的答案.如果这个消失了,我会很高兴的.谢谢