Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > List<T> и ref


Автор: artstalker 24.4.2010, 16:43
Всем добрый день.
У меня такой вопрос. Почему нельзя передавать в параметры метода по ссылки значения из List<T>?
Т.е. к примеру такой код не компилируется:
Код

 List<int>Array = new List<int>();
.
.
.
.
.
Swap(ref Array[0], ref Array[1]);

Автор: Любитель 24.4.2010, 17:04
Потому что ref применяется только к полям и переменным (строго говоря - ещё к элементам массива, но компилятор шарпа такого не поддерживает). К свойствам - нельзя.

Автор: artstalker 24.4.2010, 17:21
Цитата(Любитель @ 24.4.2010,  17:04)
Потому что ref применяется только к полям и переменным (строго говоря - ещё к элементам массива, но компилятор шарпа такого не поддерживает). К свойствам - нельзя.

Почему не поддерживает? Поддерживает. С элементами массива всё работает.

Автор: Любитель 24.4.2010, 19:14
Да, действительно. Сорри, был не прав.
Но, что касается свойств (индексеры - это параметризованные свойства), то к ним ref применить нельзя в любом случае. ref/out фактически работают с управляемыми указателями. Свойство - это методы + дополнительные метаданные. Тут не на что указатель брать. Ну а индексеры - это параметризованные свойства.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)