c# - 列表类的类结构?

标签 c# oop class class-design

我正在寻找一些类结构方面的帮助。假设我有一个名为 Dog 的类保存有关狗的信息(名称、重量、类型),但因为可能有多只狗,我还想要一个类来保存所有这些狗,以便在我的整个项目中使用。执行此操作的最佳方法是什么?

只需要一个 DogList 类,将 Dog 类信息存储到公共(public)列表中?任由我随意取回?

或者列表应该是原始狗类中的静态列表?也许在构造函数中,每当有人创建一条新狗时,这条狗就会被放入静态列表中?

编辑:抱歉问题有点失误 这是我目前的结构,想知道是否有更好的实现方式。

public class Dog
{
    public string name{get;set;}
    public int weight { get; set; }
}

public class DogFactory //not sure if thats the correct wording
{
    public List<dog> lstDogs = new List<dog>();
    public void setDogs()
    {
    Animal.Retrieve("Dog"); 
    //will retrieve a list of all dogs, with details, though this is costly to use
        foreach(Animal.Dog pet in Animal._Dogs)
        {
            Dog doggie = new doggie();
            doggie.Name = pet.Name;
            ...etc
            lstDog.add(doggie);
        }
    }
}

最佳答案

列出狗的最简单方法是:

List<Dog>

这是使用 List<T> 的狗的强类型列表来自 System.Collections.Generic 的类。你可以做一个这样的类:

public class DogList : List<Dog>

虽然这通常不是必需的,除非您要专门将属性添加到狗的 列表 而不是狗本身。

更新:

使用List<T> 时通常不需要创建专用的列表类.在大多数情况下,您可以这样做:

public class DogService
{
    public List<Dog> GetAllDogs()
    {
        var r = new Repository(); // Your data repository
        return r.Dogs.ToList();   // assuming your repository exposes a 'Dogs query'
    }
}

如果您使用 LINQ 获取数据,则可以使用 ToList() 扩展返回 List<T> ,因此无需创建派生自 List<T> 的类.

关于c# - 列表类的类结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736933/

相关文章:

java - Java中 'class'在哪里声明的?

c# - 让 Lucene 在术语中包含空格以进行精确匹配

java - 在 Java 中使用监听器时维护 OO

oop - 单元测试不同的类层次结构

python - 难以理解 Python 中的传递值和引用

python - 是否有 __getattribute__ 从 python 模块获取类或对象?

c# - 在 python 中编码时在 c# 中解码 base64

c# - 如何将 unicode UCS-2 格式的文本转换为 C# 可读?

c# - 有没有可能这不是一成不变的

c++ - 未定义的静态类变量