C# 关于Ref<;T>;第一类';我发现

C# 关于Ref<;T>;第一类';我发现,c#,reference,action,func,C#,Reference,Action,Func,链接到该类: 我的问题很简单,该类的用法如下: getter获取()=>变量,setter获取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

链接到该类:

我的问题很简单,该类的用法如下:

getter获取()=>变量,setter获取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
ref-tempx;
int-tempy=5;
tempx=newref(()=>tempy,z=>{tempy=z;});
tempy=6//tempx.Value变为6
温度值=7//坦比7岁了
我想实现这一点,为了调用该类,我将这样做:

tempx=new Ref<int>(tempy);
tempx=newref(tempy);
无需编写操作,这样就不会占用大量代码行,操作将保存在类中,并且每当我调用它时,它们都会自动执行


我不知道如何实现它,所以我在这里问。

你不能。没有办法传入
int
并最终能够在将来的某个任意时间点获取或设置它;您需要创建lambda才能做到这一点。

这是完全不可能的。他们使用这种语法是有原因的。但是,看看C#7
ref
returns。@SLaks仍然不允许您这样做。这里的神奇之处在于lambda正在为您的变量创建一个捕获的闭包。所以它们是必需的,这样才能工作。@juharr使用ref我显然不能,也许有办法创建2个捕获的闭包?1这是变量的一个ref和插入动作的第一个捕获闭包的第二个(如延迟输入)?你能检查我的最后一条评论,我将引用:“使用ref我显然不能,也许有办法创建2个捕获闭包?1这是变量的一个ref和插入动作的第一个捕获闭包的第二个(像延迟输入)?“@matanjustme不,那不可能。如果你不相信我,请随意自己写代码看看。我明白了…这是有道理的,不可能,但仍然很不幸。感谢你的回答,感谢你的时间,感谢你。