Вниз  C# / .NET
- 2.02.2015 / 21:14
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Таки верно http://ideone.com/rDwtu6
Cannot modify a value type return value of `System.Collections.Generic.List<System.Drawing.Point>.this[int]'. Consider storing the value in a temporary variable
Но это только со структурами. С классом всё работает
http://ideone.com/JcyYVg

Структуры зло
__________________
 let live

Изменено aNNiMON (2.02 / 21:19) (всего 3 раза)
- 2.02.2015 / 22:19
Asylum29
  Пользователь

Asylum29 
Сейчас: Offline
Интересно, что и при работе с массивом для значимого типа тоже все работает:
http://ideone.com/xsBBBn

Мне давно было интересно подобное поведение. Возможно, причина такого различия между коллекциями и массивами в следующем:

При работе с любыми коллекциями, когда происходит обращение к оператору [], в действительности происходит вызов методов get_Item(int index)/set_Item(int index, T value). Когда вызывается get_Item(int index) для коллекции, содержащей тип-значение, происходит его копирование в качестве возвращаемого методом результата. Следовательно, любой код, типа:
  1. list[i].X = 10;
менял бы просто копию.
Ссылочные типы просто вернули бы ссылку и все выполнилось нормально.

У массивов же при обращении к оператору [] используются более быстрые команды IL-языка (ldelema и пр.), которые позволяют вернуть непосредственно структуру (без копирования), хранящуюся в массиве.

Убедиться в этих предположениях также можно воспользовавшись дизассемблером IL-кода ILDasm.
- 2.02.2015 / 22:25
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Asylum29, а оф.документация что-то говорит на этот счёт?
__________________
 let live
- 2.02.2015 / 22:32
Asylum29
  Пользователь

Asylum29 
Сейчас: Offline
Ну с коллекциями вроде бы все логично, IL-код не обманет. А вот с ldelemа массива сложнее:
https://msdn.microsoft.com/ru-...elema(v=vs.110).aspx
- 3.02.2015 / 10:26
BlenderS60
  Пользователь

BlenderS60 
Сейчас: Offline
Кто подскажет как использовать Microsoft Silverlight для Symbian S60v5 ?
- 4.02.2015 / 15:27
boNNdaR
  Пользователь

boNNdaR 
Сейчас: Offline
Мне нужно реализовать сохранения файла в выбраной юзером директории(тоесть навигатор по дискам и папкам). Нужно писать всё с нуля, или, возможно, эсть какие то решения уже заложеные в сам язык?
- 4.02.2015 / 15:37
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
boNNdaR, есть SaveFileDialog. Там всё очень просто настраивается, ты без труда разберёшься.
__________________
 let live
- 4.02.2015 / 15:38
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
boNNdaR, .NET-Howto: Save Files Using the SaveFileDialog Component, например?
Будем считать, что я не повторяюсь. =)

Изменено mrEDitor (4.02 / 15:39) (всего 1 раз)
- 4.02.2015 / 21:25
boNNdaR
  Пользователь

boNNdaR 
Сейчас: Offline
Как сохранить массив(arraylist) в файл, а потом, при необходимости, прочитать обратно? Когда то подобное на пхп делал, но уже не помню как.

Изменено boNNdaR (4.02 / 21:25) (всего 1 раз)
- 4.02.2015 / 21:29
Kalter
  Пользователь

Kalter 
Сейчас: Offline
boNNdaR, использовать файловые потоки чтения/записи (System.IO).
__________________
 Homo homini penis est.
Наверх  Всего сообщений: 296
Фильтровать сообщения
Поиск по теме
Файлы топика (7)