我总是被告知在数组中添加元素的方式如下:
创建数组+ 1element的空副本,然后将原始数组中的数据复制到其中,然后加载新元素的新数据
如果这是真的,那么由于内存和CPU利用率的原因,在需要大量元素活动的场景中使用数组是正确的,对吗?
如果是这种情况,你是否应该尽量避免在添加大量元素时尽可能多地使用数组?你应该使用iStringMap吗?如果是这样,如果您需要两个以上的维度并且需要添加大量元素添加,会发生什么.你刚刚受到性能打击还是应该使用其他东西?
说我有这个班:
public class Animal : IEquatable<Animal>
{
public string Name { get; set; }
public bool Equals(Animal other)
{
return Name.Equals(other.Name);
}
public override bool Equals(object obj)
{
return Equals((Animal)obj);
}
public override int GetHashCode()
{
return Name == null ? 0 : Name.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
这是测试:
var animals = new[] { new Animal { Name = "Fred" } };
Run Code Online (Sandbox Code Playgroud)
现在,当我这样做时:
animals.ToList().Contains(new Animal { Name = "Fred" });
Run Code Online (Sandbox Code Playgroud)
它调用正确的泛型Equals重载.问题在于数组类型.假设我这样做:
animals.Contains(new Animal { Name = "Fred" });
Run Code Online (Sandbox Code Playgroud)
它调用 …