Проблема с Action<T>.
От: 18сс Россия  
Дата: 16.03.09 08:38
Оценка: :)
Здравствуйте!
Такой вопрос: не могу понять почему в коде

Action<bool> some = p => p =true;
Boolean[] test = new Boolean[100];
Array.ForEach(test, some);
for(int i = 0; i< test.Length; i++)
if(test[i]) Console.WriteLine(i);


элементам массива test не присаивается true.

Заранее спасибо.
Кодом людям нужно помогать!
Re: Проблема с Action<T>.
От: Mab Россия http://shade.msu.ru/~mab
Дата: 16.03.09 08:40
Оценка: +1
Здравствуйте, 18сс, Вы писали:

Потому что параметр p передается по значению.
Re: Проблема с Action<T>.
От: Ovl Россия  
Дата: 16.03.09 09:19
Оценка:
Здравствуйте, 18сс, Вы писали:

1>Здравствуйте!

1>Такой вопрос: не могу понять почему в коде

1>
1>Action<bool> some = p => p =true;
1>Boolean[] test = new Boolean[100];
1>Array.ForEach(test, some);
1>for(int i = 0; i< test.Length; i++)
1>if(test[i]) Console.WriteLine(i);
1>


1>элементам массива test не присаивается true.


потому что в лямбду передается value-копия, а не по ссылке.
в вашем случае для изменения значений массива можно использовать Array.ConvertAll

test = Array.ConvertAll(test, p => true);
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.