【发布时间】:2020-01-09 01:26:30
【问题描述】:
我正在编写一个类,其中我有一个 A 类对象的集合,并且我正在编写一个类似于 Dictionary<TKey,TValue>.TryGetValue(TKey,TValue) 的函数
看起来和这个很相似:
public class MyCollection
{
public List<A> Collection {get; set;} = new List<A>();
public bool TryGetPropertyAByPropertyB(string pPropertyB, out string pPropertyA)
{ … }
}
我只是想知道如果我用 IList 替换 List,它会更有效(谈论内存)吗?
public class MyCollection
{
public IList<A> Collection {get; set;} = new List<A>();
public bool TryGetPropertyAByPropertyB(string pPropertyB, out string pPropertyA)
{ … }
}
【问题讨论】:
-
不 - 无论您将其称为
List<T>还是IList<T>,它都将是相同的List实例 -
IList只是一个接口,没有任何实现。你在比较苹果和大众汽车。 -
这能回答你的问题吗? List<T> or IList<T>
-
您需要一路回过头来问自己 1) 是否需要关心内存,以及 2) 如果需要,您打算如何识别实际问题。随机挑选一些代码并想知道选项 A 或选项 B 是否会使用更多内存会适得其反地浪费时间——即使答案是“是”,您仍然不知道实际影响。
-
也许有趣的是(谁知道),如果您
foreach处理数据,会有 不同,因为foreach是如何实现的(鸭子打字,自定义迭代器等);但大多数时候:没有区别
标签: c#