如何从列表<>c# 2.0中

本文关键字:列表 | 更新日期: 2023-09-27 18:12:57

我的c# 2.0中有以下条件。

这里有一些VbScript代码:
For i = 0 to UBound(components) - 1
    If i = UBound(Components) - 1 Then
        WriteOut "<div class=""clearBoth""></div>"
    End If  
Next

下面我试着用c#写,请建议在c#中为"If I = UBound(Components) - 1 Then"写什么条件。

List<tc.ComponentPresentation> cmp = new List<tc.ComponentPresentation>();
foreach (tc.ComponentPresentation cm in cmp)
{
    //Here I want to right one condition that
    if(this is the last object in "cmp" list)
    {
        ////do something
    }
}

请建议! !

如何从列表<>c# 2.0中

if (cmp[cmp.Count - 1] == cm)

应该可以。

tc.ComponentPresentation lastItem = cmp[cmp.Count - 1];

最简单的方法是使用索引器:

for (int i = 0; i < cmp.Count; i++)
{
    var cm = cmp[i];
    if (i == cmp.Count - 1)
    {
        // Handle the last value differently
    }
}

另一种选择是使用MiscUtil中的"智能枚举"之类的东西,它允许您使用foreach循环,但仍然可以访问每个条目的"is first","is last"answers"index"。c# 3实际上比那篇博文中的代码更容易使用:

foreach (var entry in SmartEnumerable.Create(cmp))
{
    var cm = entry.Value;
    if (entry.IsLast)
    {
        ...
    }
}

(顺便说一句,tc是一个奇怪的名称空间名称…)

编辑:请注意,检查当前项是否等于列表中的最后一项而不是是您当前处于最后一次迭代的可靠指示。它只在列表包含不同元素时才会起作用。以上两种方法都可以告诉您是否处于最后一次迭代中,这正是我认为您想要的。

试试这个:

cmp[cmp.Count - 1]; 

将'foreach'循环改为'for'循环,并使用该循环的索引器与cmp进行比较。长度

为什么需要对遍历 ?

如果您想处理最后一个元素,那么只需使用

tc.ComponentPresentation cp = cmp[cmp.Count - 1];
//Do anything with cp here