Re: Методы в struct
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.02.03 07:17
Оценка:
Здравствуйте, Andrew-K-N, Вы писали:

AKN>Есть интерфейс


AKN>
AKN>public interface ISerialize

А чем стандартный ISerializable не покатил?

AKN>есть класс, содержащий массив этой структуры, 
AKN>и также реализующий интерфейс ISerialize
AKN>Вот пример кода

AKN>         ((ISerialize)mass[i]).Read(br);// 1  
AKN>в строке, помеченой 1, элемент массива после завершения метода остается
AKN>с нулевыми значениями, хотя метод Read в структуре считывает значения из потока
AKN>и присваивает их полям, но по возвращении - поля пустые (0 и null) :xz: 

Все так и должно быть. Когда ты преобразовываешь структуру к ISerialize то происходит боксинг этой структуры и создание ее копии внутри бокс-класса. Поэтому чтение происходит в эту копию, которая затем просто пропадает. А в массиве остается старое значение. Помочь твоей беде можно например так

[c#]
ISerialize s = (ISerialize) mass[i]; //Получаем боксированную копию
s.Read(br); //Заполняем копию
mass[i] = s; //Делаем анбоксинг в массив
... << RSDN@Home 1.0 beta 6 (np: тихо) >>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.