代码之家  ›  专栏  ›  技术社区  ›  Dark Star1

如何在运行时在C_中动态创建和命名对象?

  •  4
  • Dark Star1  · 技术社区  · 15 年前

    我希望在运行时动态地创建和命名对象的实例,因为我将它们添加到一个列表类中,不知何故,我认为这在C中是一件简单的事情,但到目前为止,我还没有找到任何关于如何实现这一点的信息。

    对于简短的描述,我有一个自定义类,在运行时,我希望创建一个数组列表,并用custon类的对象填充它,但是在使用循环索引和标准名称将对象添加到列表中时命名这些对象。

    这有可能吗?

    5 回复  |  直到 15 年前
        1
  •  2
  •   Tamas Czinege    15 年前

    您可以有一个允许您通过索引访问其元素的列表,也可以有一个允许您使用任何特定类型的dictionary:

    List<YourClass> yourList = new List<YourClass>();
    YourClass instance = new YourClass();
    yourList.Add(instance);
    YourClass instance2 = yourList[0];
    

    例如,如果您希望字典带有字符串键(“name”):

    Dictonary<string, YourClass> dict = new Dictonary<string, YourClass>();
    YourClass instance = new YourClass();
    dict.Add("someName", instance);
    YourClass instance2 = dict["someName"];
    

    与PHP不同,C中没有内置的集合类型允许您通过索引或键访问其成员。不过,你总是可以创建自己的。

        2
  •  2
  •   John Saunders Tony    15 年前

    对象在.NET中没有名称。

    另外,不要使用 ArrayList 班级。使用 List<T> 相反。

        3
  •  1
  •   Phil Sandler    15 年前

    有点奇怪,因为你不能“命名”对象。

    不过,你可以用通用字典来完成听起来像是在努力实现的目标。( Dictionary<string, MyCustomType> )字典中的字符串键有点像一个对象名,该键对应的值包含对象实例。

        4
  •  1
  •   KristoferA    15 年前

    你可能在找类似的东西吗? System.Collections.Generic.Dictionary ……?

        5
  •  0
  •   Ignacio Vazquez-Abrams    15 年前

    如果你想给他们一个名字,那么就把他们添加到一个映射中,而不是列表中。