Привет всем! Есть массив к которому периодически обращаются извне. Этот массив инициализируется 1 раз и больше его менять нельзя. Например такой массив:
static(или const) KeyCode[] arr = {v1, v2, v3, v4};
Пока не знаю статиком или константным его сделать, но суть в том, что менять его содержимое так: arr[i]=x; нельзя. Однако переменные v могут менять своё содержимое и это должно быть видно через массив. KeyCode - это enum, v1-4 тоже enum-ы. Хожу воокруг да около, в чем проблема: этот массив берет и копирует в себя содержимое enum, то есть в нем копии переменных, а не сами исходные переменные. Если arr был бы классом, то все было бы как надо: можно было бы не заниматься присвоением arr[i] нового значения чтобы изменение содержимого его переменных можно было увидеть через массив. Как можно такое провернуть?
Судя по всему, вы хотите, чтобы элементы вашей коллекции можно было изменять внутри вашего класса, но не снаружи.
Это проще всего сделать так:
class Test
{
private readonly KeyCode[] arr = { KeyCode.A, KeyCode.B, KeyCode.C, KeyCode.D };
public ReadOnlyCollection<KeyCode> Arr { get; }
public Test()
{
Arr = Array.AsReadOnly(arr);
}
}
Теперь изменения, сделанные через arr
, будут видны через Arr
:
Console.WriteLine(Arr[0]); // A
arr[0] = KeyCode.Z;
Console.WriteLine(Arr[0]); // Z
//Arr[0] = KeyCode.A; // <-- не скомпилируется
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можно ли при обращение ReadProcessMemory процесса вернуть ошибку?если возможно то с примеромЦель - запретить в нужном моменте считывать память
Здравствуйте! В методе есть две переменные(операнда) и операторКаждая RadioButton соответствует своему оператору