Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При переборе массива не дает менять элементы 
:(
    Опции темы
Suppir
Дата 12.8.2011, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Добрый день!

Нужно пробежаться по массиву arr и сделать замены в его элементах. Пишу:

Код

foreach (string line in arr)
{
     line = Regex.Replace(line, "^\d+\t(\S+)", "$1");
}



Мне в ответ:
Присвоение значений для "line" невозможно, так как он "переменная итерации foreach" (CS1656)


Как по-простому сделать перебор массива с модификацией элементов? 
PM MAIL   Вверх
YurIOs
Дата 12.8.2011, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.6.2011
Где: Ukraine

Репутация: нет
Всего: 1



Присваивать новое значение бежучей переменной нельзя. 

Здесь не обойтись без цыкла фор

Код

for (int i =0; i < arr.Length; i++)
{
        arr[i] =  Regex.Replace(arr[i], "^\d+\t(\S+)", "$1");
}

PM ICQ   Вверх
Suppir
Дата 12.8.2011, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Понятно, спасибо. 

я думал, покрасивей можно smile

Это сообщение отредактировал(а) Suppir - 12.8.2011, 16:19
PM MAIL   Вверх
ДобренькийПапаша
Дата 13.8.2011, 07:18 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Цитата(YurIOs @  12.8.2011,  16:01 Найти цитируемый пост)
Здесь не обойтись без цыкла фор

Можно обойтись без цикла for.

Код

foreach (string line in arr.ToArray())
{
     line = Regex.Replace(line, "^\d+\t(\S+)", "$1");
}



--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
WarHog
Дата 13.8.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



Нельзя. Чем этот пример отличается от примера TC? точно также идет попытка присвоения значения итерационной переменной.
--------------------
PM MAIL   Вверх
KelTron
Дата 13.8.2011, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 11
Всего: 38



Можно и покрасивей:
Код

var arr = arr.Select(line => Regex.Replace(line, "^\d+\t(\S+)", "$1")).ToArray();



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
ДобренькийПапаша
Дата 14.8.2011, 09:01 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Цитата(WarHog @  13.8.2011,  10:07 Найти цитируемый пост)
Нельзя. Чем этот пример отличается от примера TC? точно также идет попытка присвоения значения итерационной переменной. 

Отличается. Возьмите и проверьте.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
WarHog
Дата 14.8.2011, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



Код

string[] arr = { "1  2", "34", "5 6" };
foreach (string line in arr.ToArray())
{
    line = Regex.Replace(line, @"^\d+\t(\S+)", "$1");
}

На выходе
Error    1    Cannot assign to 'line' because it is a 'foreach iteration variable'

--------------------
PM MAIL   Вверх
wester
Дата 14.8.2011, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



ДобренькийПапаша
и чем отличается ? тем что создаем ненужный массив в foreach ? Хоть бы проверил перед тем как написать сообщение.
PM MAIL   Вверх
ДобренькийПапаша
Дата 17.8.2011, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Ойёёёё, вы меняете сам итератор. Прошу прощения. Конечно, я не прав. Но, уж извините, до такого я бы не додумался сам (менять непосредственно сам итератор в цикле).

Да уж, жесткач  :-D 

Фу, ну и бред у меня в голове.

Короче, вот мой случай:
Код

XDocument settings = XDocument.Load(XmlSettings.DefaultXmlSettingsFilePath);

            var nominals = settings.Descendants("Nominal");

            foreach (var currentNominal in nominals.ToArray())
            {
                if ((int)currentNominal.Attribute("Id") == this.GetID())
                {
                    currentNominal.Remove();
                }
            }


Без ToArray() будет ошибка)))

Это сообщение отредактировал(а) ДобренькийПапаша - 17.8.2011, 09:59


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0734 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.