Еще несколько отзывов об этом: хотя Nix уже ответил на ваш вопрос, я бы также отбросил Hashtable (точно так же как ArrayList, он устарел), хотя ваша концепция не подходит для этого: вы храните строку в объекте ..
Итак, при копировании и изменении мы получим
static void Main(string[] args)
{
Dictionary<string, object> Start = new Dictionary<string, object>();
Start["active"] = true;
Start["name"] = "prog1";
Start["path"] = @"C:\programfiles\prog1";
Start["parameter"] = string.Empty;
StartList.Add(Start);
Dictionary<string, object> Start = new Dictionary<string, object>();
Start["active"] = false;
Start["name"] = "prog2";
Start["path"] = @"C:\programfiles\prog2";
Start["parameter"] = "/q";
StartList.Add(Start);
Но я бы пошел дальше: если вы просто хотите порождать процессы, для этого и предназначен класс Process
. Он сохраняет ту же самую информацию (за исключением «активной») в свойстве StartInfo
.
Другой (лучше?) Подход заключается в создании класса значений для этого набора информации:
class YourStartInfo
{
public bool Active { get; set; }
public string Name { get; set; }
public string Path { get; set; }
public string Parameter { get; set; }
}
и изменение вашего кода, чтобы использовать это:
static List<YourStartInfo> StartList = new List<YourStartInfo>();
static void Main(string[] args)
{
StartList.Add(new YourStartInfo {
Active = true,
Name = "prog1",
Path = @"C:\programfiles\prog1";
Parameter = string.Empty
});
StartList.Add(new YourStartInfo {
Active = false,
Name = "prog2",
Path = @"C:\programfiles\prog2";
Parameter = "/q"
});
foreach (YourStartInfo startInfo in StartList)
{
// Access the information in a sane way, not as object here
if (startInfo.Active)
{
// Probably launch it?
}
}
Console.ReadLine();
}