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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с foreach 
V
    Опции темы
BoomeR
  Дата 14.10.2007, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В следующем коде :

Код

private void Turn (double a,Point []Verge, char mode)
{
if (Char.Equals (mode,'z'))
foreach (Point p in Verge)
{
      p.X = ((int)(p.X*System.Math.Cos(a)+p.Y*System.Math.Sin(a)+0.5));
      p.Y = ((int)(p.Y*System.Math.Cos(a)-p.X*System.Math.Sin(a)+0.5));
}
}


Выдаёт ошибку : The left-hand side of an assignment must be a variable, property or indexer. (Ругаеться на p.X и p.Y в левых частях)


Это сообщение отредактировал(а) BoomeR - 14.10.2007, 21:31
PM MAIL WWW ICQ Skype   Вверх
QryStaL
Дата 14.10.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


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

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



У меня выдаёт следующее:

Cannot modify members of 'p' because it is a 'foreach iteration variable'

Используй конструкцию for


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Bogdan1024
  Дата 15.10.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Point - это структура, тоесть если ты изменишь в цикле for each её значение, то оно не сохранится у тебя в твоём массиве Verge потому что в переменной p хранится не ссылка на объект, а его значение!
Потому таки да, нужно юзать for.

Это сообщение отредактировал(а) Bogdan1024 - 15.10.2007, 15:47


--------------------
user posted image
PM MAIL   Вверх
1stain
Дата 15.10.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Bogdan1024 @  15.10.2007,  15:46 Найти цитируемый пост)
Point - это структура, тоесть если ты изменишь в цикле for each её значение, то оно не сохранится у тебя в твоём массиве Verge потому что в переменной p хранится не ссылка на объект, а его значение!

Срочно прими жаропонижающее - ибо ты бредишь. Да, любой массив размещается в куче, но если массив создаецца через [] и содержит ValueType элементы, то они неупаковываюцца. (если очень хочецца, то массив значимых типов можно разместить и в стеке)
Как сказал QryStaL
Цитата(QryStaL @  14.10.2007,  21:54 Найти цитируемый пост)
Используй конструкцию for

так как foreach проходит массив посредством IEnumerator, который не позволяет редактировать текущий элемент.


Это сообщение отредактировал(а) 1stain - 15.10.2007, 19:27


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
archeg
Дата 15.10.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вы про что? оО

foreach можно приблизительно рассписать так:
Код

IEnumerator it = arr.GetEnumerator();
while (it.MoveNext())
{
   Element el = (Element) it.Current;
   //....
}


Current в IEnumerator - свойство только для чтения:
Код

{ get;}

Так что:
Цитата(1stain @  15.10.2007,  15:55 Найти цитируемый пост)
так как foreach проходит массив посредством IEnumerator, который не позволяет редактировать текущий элемент.

В точку.


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
iad
Дата 15.10.2007, 18:55 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(1stain @  15.10.2007,  16:55 Найти цитируемый пост)
Срочно прими жаропонижающее

Пошел вон, не занаешь - заткнись
Цитата(QryStaL @  14.10.2007,  22:54 Найти цитируемый пост)
Используй конструкцию for
 smile 

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


Опытный
**


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

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



iad, выпей йаду  smile 


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
ivashkanet
Дата 15.10.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


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

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



Цитата(iad @  15.10.2007,  18:55 Найти цитируемый пост)
Пошел вон, не занаешь - заткнись
Цитата(1stain @  15.10.2007,  19:20 Найти цитируемый пост)
iad, выпей йаду

Ведем себя прилично!!!!!!!

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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