gpt4 book ai didi

C# 泛型 : List or new class extends List
转载 作者:太空狗 更新时间:2023-10-29 20:45:25 38 4
gpt4 key购买 nike

我的 Business 对象中有一个名为 Product 的类,而在另一个类中我想返回此类的对象列表。我应该使用哪种方法?

public static List<Product> GetProductList() { .... }

或者在我的业务对象命名空间中创建另一个名为 ProductList 的类,它扩展了 List <Products>如下:

public class ProductList :List<Products > { .... }

并在那里使用它

public static ProductList GetProductList() { .... }

这两个有区别吗?内存分配和性能如何?

最佳答案

额外类型 ( ProductList ) 的开销很小,但不会很大。但这真的取决于您想做什么。在很多方面,ProductList仍然是个坏主意,因为它会燃烧 List<T>进入公共(public) API,和 List<T>不是很可扩展(例如,这些方法都不是 virtual )。 Collection<T>可能有更多的扩展选项。

我赞成抽象或封装:

public static IList<Product> GetProductList() {...} // abstraction; can return
// List<Product> if we want

或:

public class ProductList : IList<Product> {...} // encapsulation, but need to
// add a lot of dull code

遗憾的是 C# 没有使封装方法变得简单(我在想“mixins”)。

请注意,另一个技巧(有时适用,有时不适用)是使用扩展方法在 IList<Product> 上添加额外方法的错觉。 ...这是一场棘手的辩论,所以我只是提一下,而不是说“做这个”。

关于C# 泛型 : List<Object> or new class extends List <Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630617/

38 4 0
文章推荐: C# IEnumerable 到字符串
文章推荐: C# List 处理/关闭