Я обнаружил, что делегаты ведут себя как типы значений, но я хочу использовать их в качестве ссылочных типов.
Есть ли способ лучше, чем просто обернуть класс над делегатом, чтобы он вел себя как ссылочный тип?
Сначала позвольте мне объяснить, что означает "вести себя как тип значения":
delegate fun void();
void a() { }
void main()
{
fun A;
fun B;
B = A;
A += a;
}
Результат показывает, что B
не имеет ничего, кроме A
a
. Здесь делегаты похожи на int
типы, такие, что когда:
int a = 1;
int B = 0;
int A = 0;
B = A;
A += a;
результат равен A == 1
и B == 0
.
Чтобы быть более точным c, что я хочу, чтобы делегат вел себя как указатель, когда A
изменяется, B
также изменяется. Когда A += a
, «B» также получает «a» неявно.