powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Closure
15 сообщений из 15, страница 1 из 1
Closure
    #38858802
relief
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему такой код кидает ошибку?

Код: c#
1.
2.
3.
4.
5.
IEnumerable<char> query = "Not what you might expect";
string vowels = "aeiou";
for (int i = 0; i < vowels.Length; i++)
 query = query.Where (c => c != vowels[i]);
foreach (char c in query) Console.Write (c);



Ведь когда i = 5 то в query уже ничего не попадает
...
Рейтинг: 0 / 0
Closure
    #38858826
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код довольно бессмысленный.

дело в том, что полученный в query запрос начнет выполняться только на строке
Код: c#
1.
foreach (char c in query) Console.Write (c);

когда i уже будет равно 5 (для всех пяти случаев)
...
Рейтинг: 0 / 0
Closure
    #38858828
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так будет работать
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
      IEnumerable<char> query = "Not what you might expect";
      string vowels = "aeiou";
      for (int i = 0; i < vowels.Length; i++)
      {
        int j = i;
        query = query.Where(c => c != vowels[j]);
      }
      foreach (char c in query) Console.Write(c);
...
Рейтинг: 0 / 0
Closure
    #38858846
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, судя по названию топика relief это знает... просто не может понять в чем сложность...
...
Рейтинг: 0 / 0
Closure
    #38858854
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserсудя по названию топика relief это знает.ну так пусть тогда и спрашивает, что конкретно непонятно, я, например, не знаю квалификации ТС, в частности, понимает ли он, что такое деревья выражений, материализация и захват переменной

buserпросто не может понять в чем сложность..ну и ответил бы тогда

в том, что переменная i существует один раз, соответственно, захватывается одна и та же переменная, а j существует пять раз, соответственно захватываются пять разных переменных
...
Рейтинг: 0 / 0
Closure
    #38858966
relief
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
 IEnumerable<char> query = "Not what you might expect";
string vowels = "aeiou";
for (int i = 0; i < vowels.Length; i++)
 query = query.Where (c => c != vowels[i]);
foreach (char c in query) Console.Write (c);




buserпросто не может понять в чем сложность..ну и ответил бы тогда

в том, что переменная i существует один раз, соответственно, захватывается одна и та же переменная, а j существует пять раз, соответственно захватываются пять разных переменных[/quot]

мне непонятно вот что. Как так получается, что переменная i из цикла for уже за пределами видимости, когда непосредственно выполняется query в foreach вроде как, но на самом деле она видна?
...
Рейтинг: 0 / 0
Closure
    #38858978
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гугли "захват переменных"

например это
http://habrahabr.ru/post/141270/
...
Рейтинг: 0 / 0
Closure
    #38858988
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
relief,
вообще Вас не выкидывает на шестой итерации когда i=5?
количество символов и индекс символа в строке абсолютно разные вещи.
...
Рейтинг: 0 / 0
Closure
    #38858994
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиrelief,
вообще Вас не выкидывает на шестой итерации когда i=5?
количество символов и индекс символа в строке абсолютно разные вещи.не выкидывает, у него условие "меньше", все правильно
...
Рейтинг: 0 / 0
Closure
    #38858996
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
а должно выкинуть, i захвачена, перед проверкой в for она инкременируется ++ ==5
проверку не проходит и уходит такой в ==5 в query за цикл
...
Рейтинг: 0 / 0
Closure
    #38859003
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в моем коде i не захвачена, а в код ТС как раз и вылетает по этой причине, об этом самое первое сообщение
...
Рейтинг: 0 / 0
Closure
    #38859012
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мой решарпер бы орал и хрюкал на i? как каспер по вирусом, а что голая студия не заботится о психическом стоянии пользователей
в данном случае?
...
Рейтинг: 0 / 0
Closure
    #38859126
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степимой решарпер бы орал и хрюкал на i? как каспер по вирусом, а что голая студия не заботится о психическом стоянии пользователей
в данном случае? А в данном случае, нахуа мне пустые вопли Решарпера?
Код: c#
1.
2.
3.
4.
for (int i = 0; i < 10; i++)
{
    var r = someArray.Where(v => v != i).ToArray();
}
...
Рейтинг: 0 / 0
Closure
    #38859163
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КГде-то в степимой решарпер бы орал и хрюкал на i? как каспер по вирусом, а что голая студия не заботится о психическом стоянии пользователей
в данном случае? А в данном случае, нахуа мне пустые вопли Решарпера?
Код: c#
1.
2.
3.
4.
for (int i = 0; i < 10; i++)
{
    var r = someArray.Where(v => v != i).ToArray();
}



Заведомо неправильно сделано, вот зачем. Кроме того, стоит заменить ToArray на ToListAsync и тут же этот код оборачивается жопой. Не надо допускать даже возможности сделать ошибку на ровном месте. Так что вопли решарпера тут к месту по многим причинам.
...
Рейтинг: 0 / 0
Closure
    #38859450
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
авторв данном случае?
Алексей, в данном случае ночной кошмар ( код), опубликованный выше ( в самом начале), домыслы и инсинуации имхо не уместны..
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Closure
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]