Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


С областью видимости всё в силе: вне foreach переменная не видима. Предположение: другое дело что компилятор"увидев" знакомую "картину" решает не списывать переменную. Возможно с помощью Garbage Collector данную ситуацию можно отрегулировать.
Более простой пример
Код: Выделить весь код
using System;

class Some
{
    public static new void Main()
    {
        int[] a = new int[] { 1, 2, 3 };
        int[] b = new int[] { -1, -2, -3 };
        foreach (int i in a)
        {
            System.Console.WriteLine(i);
        }
        foreach (int i in b)
        {
            System.Console.WriteLine(i);
        }
    }
}
В отладчике i приходит ко второму foreach действительно как 3 (на чём и закончился предыдущий цикл), но второй раз печать 3 не станет, так как сразу же будет присвоено -1.

Если с XML вариантом так не происходит, и значения из предыдущего цикла добавляются в TreeView, то можно посчитать что это баги при использовании с XML.

Отправлено: 16:25, 17-09-2010 | #2