Как получить последний объект из списка <> в C # 2.0 - PullRequest
1 голос
/ 31 октября 2011

У меня есть условие ниже в моем 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 #, пожалуйста, предложите, какое условие будет написано«Если я = UBound (Компоненты) - 1 То» в c #.

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
    }
}

Пожалуйста, предложите !!

Ответы [ 6 ]

3 голосов
/ 31 октября 2011
if (cmp[cmp.Count - 1] == cm)

Это должно сработать.

2 голосов
/ 31 октября 2011
tc.ComponentPresentation lastItem = cmp[cmp.Count - 1];
0 голосов
/ 31 октября 2011

Зачем вам нужно перебирать по списку?

Если вы хотите работать с последним элементом, просто используйте

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

Вот и все

0 голосов
/ 31 октября 2011

Измените цикл 'foreach' на цикл 'for' и используйте индексатор для цикла, чтобы копировать в cmp.Length

0 голосов
/ 31 октября 2011

Попробуйте это:

cmp[cmp.Count - 1]; 
0 голосов
/ 31 октября 2011

Самый простой подход - использовать вместо этого индексатор:

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

В качестве альтернативы можно использовать что-то вроде "умного перечисления" из MiscUtil ,который позволяет вам использовать цикл foreach, но при этом обращаться к «первым», «последним» и «индексам» для каждой записи.С C # 3 это на самом деле несколько проще в использовании, чем код в этом посте:

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

(Кроме того, tc - это нечетное имя пространства имен ...)

EDIT: Обратите внимание, что проверка того, является ли ваш текущий элемент равным , последний элемент в списке - , а не , является надежным признаком того, что вы в данный момент находитесь на последней итерации.Это будет работать, только если список содержит отдельные элементы.Оба приведенных выше подхода действительно сообщают вам, находитесь ли вы на последней итерации, что, как я и предполагал, вы хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...