Реальный usecase для одного и того же fieldoffset на нескольких полях
Привет, читаю книгу CLR через C# на страница 124 существует дискуссия об изменении вида макета для типов значений для обеспечения совместимости, и есть приведенный пример, который использует то же самое
FieldOffSet
для нескольких полей.Что я уже пробовал:
Я понимаю, что память обоих полей перекрывается, и изменение одного поля приведет к изменению значения другого поля, но то, о чем я думаю, - это реальный случай использования, когда он нам понадобится или использовался в прошлом? вот код для примера:
[StructLayout(LayoutKind.Explicit)] public struct SomeValType { [FieldOffset(0)] public Int16 m_b; // The m_b and m_x fields overlap each [FieldOffset(0)] public Int32 m_x; // other in instances of this type } }
и когда я написал следующий код в Main, он вызвал 10 как значение в
m_x
поле :SomeValType obj = new SomeValType(); obj.m_b = 10; Console.WriteLine(obj.m_x);
Может ли кто-нибудь пролить свет на это? это будет высоко оценено.
Спасибо!