通过“参考”可以将值分配给值类型的最佳做法是什么?在我的情况下,我需要这个可以通过应用内控制台为int,float等赋值。我不想给包含值类型的对象提供引用,因为这不会让我的控制台管理器变得通用,并且添加新命令将是一场噩梦。另外我不能使用指针,因为在我的情况下,不安全模式是不可能的。使值类型表现为参考
因为我的CLR的一点理解,我想是这样的:
int i = 1;
object o = i;
o = (object) 5;
Console.WriteLine(i);// prints original value of i, 1. I expected 5;
所以它没有工作,所以我发现这个类:
using System.Collections.Generic;
using System.Collections;
using System;
public class Pointer <T>
{
private Func<T> getter;
private Action<T> setter;
public Pointer (Func<T> getter, Action<T> setter)
{
this.getter = getter;
this.setter = setter;
}
public T Value
{
get { return getter(); }
set { setter(value); }
}
}
多亏了它,我可以赋值值的类型喜欢参考这样的:
int i = 1;
Pointer ptr = new Pointer<int>(()=>i, x=>{i=x;})
ptr.Value = 5;
Console.WriteLine(i);// prints as expected 5;
工程,但你可以看到它是非常不雅观方式(至少我认为它不是)。
所以问题依然存在。这种情况下的最佳做法是什么?
干杯
创建您自己的自定义类型aka类 –
为什么地球上你会需要这样做? –
@Ehsan Sajjad,这不是一个案例。客户希望能够通过应用内控制台更改代码中的不同变量。达林如果你阅读我的文章,你会发现,或者你有其他方式的优雅方式。 –