C# О классе Ref‹T›, который я нашел

Ссылка на класс:

https://stackoverflow.com/a/4543089/6591306

Мой вопрос прост, использование класса таково:

Геттер получает () => variable, а установщик получает z => { variable = z; }

Чтобы вызвать функцию, я называю ее так:

ref<int> tempx;
int tempy = 5;
tempx=new Ref<int>(() => tempy, z => { tempy = z; });
tempy = 6;//tempx.Value becomes 6
tempx.Value = 7;//tempy becomes 7

Я хочу добиться этого, чтобы вызвать класс, я сделаю это:

tempx=new Ref<int>(tempy);

без написания действий, так что это не займет много строк кода, а действия будут сохранены в классе, и всякий раз, когда я его вызываю, они будут выполняться автоматически.

Я не знаю, как это сделать, поэтому я спрашиваю здесь.


person matan justme    schedule 05.06.2017    source источник
comment
Это совершенно невозможно. Есть причина, по которой они используют этот синтаксис.   -  person SLaks    schedule 05.06.2017
comment
Однако посмотрите на C# 7 ref возвращает.   -  person SLaks    schedule 05.06.2017
comment
@SLaks Это все равно не позволит вам сделать это.   -  person Servy    schedule 05.06.2017
comment
Магия здесь в том, что лямбда-выражения создают захваченное замыкание над вашей переменной. Поэтому они необходимы для того, чтобы это работало.   -  person juharr    schedule 06.06.2017
comment
@juharr, используя ссылку, которую я, очевидно, не могу, может быть, есть способ создать 2 захваченных замыкания? 1, который является ссылкой на переменную и второй из первого захваченного замыкания со вставленными действиями (например, отложенная запись)?   -  person matan justme    schedule 06.06.2017


Ответы (1)


Вы не можете. Невозможно передать int и получить или установить его в какой-то произвольный момент времени в будущем; вам нужно создать лямбды, чтобы иметь возможность сделать это.

person Servy    schedule 05.06.2017
comment
можете ли вы проверить мой последний комментарий, и я процитирую: используя ссылку, я, очевидно, не могу, может быть, есть способ создать 2 захваченных замыкания? 1, который является ссылкой на переменную и второй из первого захваченного замыкания со вставленными действиями (например, отложенная запись)? - person matan justme; 06.06.2017
comment
@matanjustme Нет, это невозможно. Не стесняйтесь написать код самостоятельно, чтобы увидеть, если вы мне не верите. - person Servy; 07.06.2017
comment
понятно... понятно, что это невозможно, но все равно жаль. ty за ответ и за время, оценив его. - person matan justme; 07.06.2017