微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

替换对象,但将先前的存储位置保留在c#中

如何解决替换对象,但将先前的存储位置保留在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 举报,一经查实,本站将立刻删除。