Я конечно глубоко зивиняюсь, что вновь поиднимаю это тему, но не доходит до меня. Все-таки можно или нет определить структуру, в которой есть массив постоянного размера? Я знаю, что классы располагаются в куче, а структуры - в стеке. И я знаю, что структуры передаются по значению, а классы по ссылке. И понимаю, что в связи с этим размер структуры должен быть мааааааленьким. НО все равно мне нужно это! У меня массивчик малюсенький, но для удобства он должен быть внутри структуры! Ниже результат моих поисков. Вариант с new не очень меня привлекает, т.к. такой малюсенький массивчик лучше хранить физически в самой структуре. Кстати, вариант с разбиением массива на N отдельных скалярных полей - оффтоп.
| Код | public struct MyStruct { public int MyArray[2]; } // CS0650: Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. // To declare a fixed size buffer field, use the fixed keyword before the field type.
public struct MyStruct { public int[2] MyArray; } // CS0270: Array size cannot be specified in a variable declaration (try initializing with a 'new' expression)
public struct MyStruct { public int[] MyArray = new int[2]; } // CS0573: MyStruct.MyArray: cannot have instance field initializers in structs
public struct MyStruct { public fixed int MyArray[2]; } // CS0214: Pointers and fixed size buffers may only be used in an unsafe context
unsafe public struct MyStruct { public fixed int MyArray[2]; } // CS0227: Unsafe code may only appear if compiling with /unsafe
|
|