public class Item{ some variables and methods }
public Item[] stash = new Item[50];
stash[a] = new Item();
stash[a].somevar = somevalue;
public Item it1 = stash[a];
stash[b] = new Item();
stash[b].somevar = someothervalue;
public Item it2 = stash[b];
我想仅使用 it1 和 it2 来交换藏匿[a] 和藏匿[b] 的内容strong>因为发生在不同的代码块中,我无法再访问 a 和 b 值。
我对C#没什么经验,所以我很难理解它如何处理类实例数组。
答案 0 :(得分:3)
你不能交换你不知道的东西,在这种情况下你不知道索引。
但如果你有两个实例,你可以搜索索引:
int indexOfIt1 = Array.FindIndex(stash, i => object.ReferenceEquals(i, it1));
int indexOfIt2 = Array.FindIndex(stash, i => object.ReferenceEquals(i, it2));
stash[indexOfIt2] = it1;
stash[indexOfIt1] = it2;
这检查两者是否是相同的引用,如果它们只是相等(如此相等的属性值),您应该覆盖Equals
+ GetHashCode
并使用{{1} }。如果你有多个相等/相同的引用,这将替换任意(第一个)。