mar*_*rix 0 c# arrays reference object
我有对象数组(假设类名是Snap)Snap.
有没有办法保存变量直接引用单元格中的对象,而不是单元格?因为,当我这样做时:
Snap[] goo = new Snap[3];
// here we add some objects to this array
Snap foo = (Snap)goo[1];
Run Code Online (Sandbox Code Playgroud)
所以现在,如果我要改变foo,那么我也会改变goo [1].好.但是现在我将在goo上做一些排列:
first i had: 0 1 2
after permutation: 1 0 2
Run Code Online (Sandbox Code Playgroud)
foo仍然是goo [1]但不是这个对象!这个对象现在在goo [0]!那么,如何直接"捕捉"这个对象,而不是单元格!有任何想法吗?
值foo 是对象的直接引用......但也是如此goo[1].它们引用相同的对象,因此如果你改变了对象(不管你做了什么),那么这些改变都将通过两个引用来看到.
请注意,更改值通过 foo没有实际改变值的foo.我喜欢从房屋(作为对象),街道地址(作为参考)和纸张(作为变量)的角度来考虑它.假设我把我的地址写在两张纸上,然后给你一个,给别人一个(弗雷德).然后你把我的房子涂成红色,然后弗雷德来参观(通过阅读写在纸上的地址).你改变了我家的颜色 - 但你根本没有改变弗雷德的那张纸.
如果你想避免这种别名,你应该考虑使你的类型不可变,并提供创建新对象的方法,这些对象就像旧对象一样,除了一些特定的变化 - String例如.
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |