如何解决替换对象,但将先前的存储位置保留在c#中
| 假设我有一个列表:List<object> list = new List();
list.Add(object1);
list.Add(object2);
object foo = list[0];
如何调用list来替换list [0],以便foo将自动指向新替换的对象?
我知道这行不会成功,因为foo会继续指向list [0]的旧值...
list[0] = object3;
谢谢!
解决方法
我认为这是不可能的。您需要实现自己的间接附加级别。
, 您可以使用委托/匿名lambda获取列表[0]:
Func<object> foo = () => list[0];
当然,这会稍微改变语法,因为它现在是foo()
而不是foo
,但是它的效果是您可以在以后的任何时间获取list [0]的值,并且总是获取当前值。
您真正想要做的是重写赋值运算符,但这在C#中是不可能的。最接近的是创建一个行为类似于create5 a的类,并在其上具有.Value属性,并将其分配给该.Value属性,而不是覆盖列表中的对象本身。
, 您可以使用fixed关键字,但只能在不安全的代码中使用。但是我不确定您尝试执行的操作是什么,如果您需要这种级别的控制c ++ cli,它可能无法满足您的需求,这将是更好的选择。
, 不安全的指针是一种可能:http://msdn.microsoft.com/zh-cn/library/y31yhkeb(v=vs.80).aspx
, 对于\“ safe \”代码,您可以执行以下操作,例如将值存储在长度为1的数组中,然后仅存储对该数组的引用,并始终按ѭ6access访问该值,但这有点麻烦,而且还有可能是一种更好的方法来完成您想完成的任务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。