Пользовательская коллекция переменных (аналогично Array) в C# ⇐ C#
-
Гость
Пользовательская коллекция переменных (аналогично Array) в C#
Я всегда думал, что массивы в C# ничем не отличаются от других коллекций. Это просто изменяемая коллекция фиксированного размера. Но при более детальном рассмотрении кажется, что массивы существенно отличаются, поскольку это набор переменных, а не значений:
var array = new MyStruct[] {new MyStruct() }; список вар = новый List {новый MyStruct() }; массив[0].Значение = 1; // Юридический список[0].Значение = 2; // Незаконно вар listElement = список [0]; списокЭлемент.Значение = 3; // Это допустимо, но отличается от изменения массива[0], поскольку при доступе к списку[0] создается копия struct MyStruct // Да, злая изменяемая структура { общественное значение int; } Мои вопросы:
[*]Есть ли способ написать на C# собственную коллекцию, имитирующую поведение массива, т. е. представляющую собой коллекцию переменных вместо значений? [*]Если нет, значит ли это, что массивы в этом смысле волшебны и принципиально отличаются от всех других коллекций?
Я всегда думал, что массивы в C# ничем не отличаются от других коллекций. Это просто изменяемая коллекция фиксированного размера. Но при более детальном рассмотрении кажется, что массивы существенно отличаются, поскольку это набор переменных, а не значений:
var array = new MyStruct[] {new MyStruct() }; список вар = новый List {новый MyStruct() }; массив[0].Значение = 1; // Юридический список[0].Значение = 2; // Незаконно вар listElement = список [0]; списокЭлемент.Значение = 3; // Это допустимо, но отличается от изменения массива[0], поскольку при доступе к списку[0] создается копия struct MyStruct // Да, злая изменяемая структура { общественное значение int; } Мои вопросы:
[*]Есть ли способ написать на C# собственную коллекцию, имитирующую поведение массива, т. е. представляющую собой коллекцию переменных вместо значений? [*]Если нет, значит ли это, что массивы в этом смысле волшебны и принципиально отличаются от всех других коллекций?
Мобильная версия