相关疑难解决方法(0)

如何以及何时放弃在C#中使用数组?

我总是被告知在数组中添加元素的方式如下:

创建数组+ 1element的空副本,然后将原始数组中的数据复制到其中,然后加载新元素的新数据

如果这是真的,那么由于内存和CPU利用率的原因,在需要大量元素活动的场景中使用数组是正确的,对吗?

如果是这种情况,你是否应该尽量避免在添加大量元素时尽可能多地使用数组?你应该使用iStringMap吗?如果是这样,如果您需要两个以上的维度并且需要添加大量元素添加,会发生什么.你刚刚受到性能打击还是应该使用其他东西?

.net c# theory arrays

25
推荐指数
3
解决办法
2万
查看次数

List <T> .Contains和T [].包含不同的行为

说我有这个班:

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)

它调用 …

c# arrays contains list equals

19
推荐指数
1
解决办法
1008
查看次数

标签 统计

arrays ×2

c# ×2

.net ×1

contains ×1

equals ×1

list ×1

theory ×1