C# 创建对象数组的建议
我正在查看特定服务的注册表项。因此,我创建了一个类,以便为特定服务的regkey创建对象 有多个服务都具有该特定服务的多个注册密钥 我的班级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
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);
}