有关创建对象数组的建议

本文关键字:数组 创建对象 | 更新日期: 2023-09-27 17:58:40

我正在查看特定服务的注册表项。 所以我创建了一个类,以便我可以为特定服务的 regKeys 创建我的对象。

有多个服务都具有该特定服务的多个注册密钥。

我的班级

class Component
{
    private String regkey;
    private String regpath;
    //regkey
    private String getRegkey(String name)
    { return name; }
    public string regkeyProp
    {
        get { return (regkey); }
        set { regkey = getRegkey(value); }
    }
    //regpath
    private String getRegPath(String name)
    { return name; }
    public string regPathProp
    {
        get { return (regpath); }
        set { regpath = getRegPath(value); }
    }
}

所以现在我已经定义了我的类,这样我就可以创建我的对象了。 所以我的服务之一是同步服务。 所以我创建了名为 sync 的新对象。

Component SYNC= new Component();

我的另一个功能扫描认为他阵列并获取同步服务的每一个注册表密钥和路径。

当我构建我的同步对象时,我正在分配我的regkeyProperty。

Sync.regkeyProps = regkeyValue;

所以这里的问题是,一个同步服务有很多注册表密钥,当它通过 for 循环时,它每次只存储最后一个注册表密钥。

只是困惑我如何做到这一点。 我会假设某种数组?

有关创建对象数组的建议

我猜你到底在问什么,但我假设你想保留一个超过 1 个Component对象的列表。您可以通过执行以下操作来实现此目的:

List<Component> syncItems = new List<Component>();
foreach (/* not sure how you loop over the items */)
{
  Component sync = new Component();
  sync.regKeyProp = ...
  syncItems.Add(sync);
}

另外作为旁注,我建议选择与Component不同的名称,因为Component已经是.NET中大量使用的一些概念的名称

某种形式的IEnumerable可能是你最好的选择。 根据你拥有它们后想要做什么,你可以使用 List<T>(我的默认值(或任何其他 IEnumberable 接口的具体实现。

但是,使用"组件"类所拥有的内容,您可能会(可能 - 因此在进行更改之前确保自己(最好使用Dictionary<string, List<string>>而不是创建自定义类来保存相当于具有值列表的键。

你会得到这样的名字(以替换你的getRegPath(

''Assuming Components is a Dictionary as mentioned and "name" is the string you pass into your method
Components[name]

这将使您进入字典中由键"名称"(在您的情况下为注册表项(定义的元素,您可以访问该属性,例如:Components[name].Value[0]或任何其他访问List<T>中特定项目的方法

再次,YMMV,因此在进行更改之前,请确保词典确实最适合您。

我不能说我完全理解,但这里有一个建议可能会也可能不会有所帮助。

Sync.regkeyProps = regkeyValue;

您可以使用列表并添加到列表中,而不是使用数组。

所以你可以做

Sync.regkeyProps.Add(regkeyValue(,它将入到数组中,而不必担心索引。