C# 创建对象数组的建议

C# 创建对象数组的建议,c#,object,C#,Object,我正在查看特定服务的注册表项。因此,我创建了一个类,以便为特定服务的regkey创建对象 有多个服务都具有该特定服务的多个注册密钥 我的班级 class Component { private String regkey; private String regpath; //regkey private String getRegkey(String name) { return name; } public string regkeyProp

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

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

我的班级

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的新对象


组件同步=新组件();

我的另一个函数是扫描数组并获取同步服务的每个regkey和路径

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


Sync.regkeyProps=regkeyValue;

所以这里的问题是,一个同步服务有许多regkey,当它通过for循环通过数组时,每次只存储最后一个regkey


我只是不知道如何才能做到这一点。我假设某种数组?

某种形式的
IEnumerable
可能是您的最佳选择。根据您在拥有它们之后想要做什么,您可以使用
List
(我的默认设置)或
IEnumberable
接口的任何其他具体实现

尽管如此,利用“组件”类所拥有的功能,您可能(在进行更改之前请确保您自己)可以更好地使用
字典
,而不是创建一个自定义类来保存一个包含值列表的键

您会得到这样的名称(以替换您的
getRegPath

这将使您找到字典中由键“name”(在您的情况下是注册表键)定义的元素,您可以访问以下属性:
Components[name].Value[0]
或访问
列表中特定项的任何其他方法


同样,YMMV,所以在你做出改变之前,请确保这本字典真的是最适合你的。

我不能说我完全理解,但这里有一个建议可能有用,也可能没用

Sync.regkeyProps=regkeyValue

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

所以你可以


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

我猜您到底在问什么,但我假设您希望保留一个包含多个
组件的列表。您可以通过这样做来实现这一点:

List<Component> syncItems = new List<Component>();

foreach (/* not sure how you loop over the items */)
{
  Component sync = new Component();
  sync.regKeyProp = ...
  syncItems.Add(sync);
}
List syncItems=new List();
foreach(/*不确定如何循环项目*/)
{
组件同步=新组件();
sync.regKeyProp=。。。
syncItems.Add(同步);
}

另外,作为旁注,我建议从
组件
中选择一个不同的名称,因为
组件
已经是.NET中经常使用的某个概念的名称

您的猜测是正确的。我测试了这个,它似乎像我预期的那样工作。只有一个问题。如何从列表中获取数据?@Andy12:您可以使用另一个
foreach
foreach(syncItems中的组件项)
或使用其索引再次获取数据:
Component item=syncItems[2]
List<Component> syncItems = new List<Component>();

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