powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / что-то не то с копированием ссылок
3 сообщений из 3, страница 1 из 1
что-то не то с копированием ссылок
    #38882412
ДАП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть код:
Код: c#
1.
2.
3.
4.
5.
6.
MyStruct sss = new MyStruct();
object o = sss;
...
ByteArrayToStructure(bytearray, ref o);
Text = sss.cmdname;
Text = ((MyStruct)o).cmdname;



object o = sss; это как я понимаю, ссылка на экземпляр структуры sss, т.е. имеем 2 ссылки на один и тот же объект в памяти.
Но почему-то поле cmdname у "sss" и "o" разные.
...
Рейтинг: 0 / 0
что-то не то с копированием ссылок
    #38882420
ДАП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может тут что зарыто:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
void ByteArrayToStructure(byte[] bytearray, ref object obj)
        {
            int len = Marshal.SizeOf(obj);
            IntPtr i = Marshal.AllocHGlobal(len);
            Marshal.Copy(bytearray, 0, i, len);
            obj = Marshal.PtrToStructure(i, obj.GetType());
            Marshal.FreeHGlobal(i);
        }
...
Рейтинг: 0 / 0
что-то не то с копированием ссылок
    #38882436
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДАПobject o = sss; это как я понимаю, ссылка на экземпляр структуры sss, т.е. имеем 2 ссылки на один и тот же объект в памяти.
Но почему-то поле cmdname у "sss" и "o" разные.
Потому что если у вас MyStruct действительно структура, то она - значимый тип, и располагается на стеке. При присвоении значения в тип object происходит boxing, и экземпляр object с завернутым внутрь значением структуры располагается в куче - мы получаем 2 независимых значения.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / что-то не то с копированием ссылок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]