代码之家  ›  专栏  ›  技术社区  ›  ttarchala

我们可以初始化动态字符串数组吗

  •  0
  • ttarchala  · 技术社区  · 5 年前

    有没有办法初始化动态字符串数组。

    
    public class CXmlFileHook
        {
            string  vAppname;
            string  vClassname;
            string  vIdmark;
            string  vExecname;
            string [] vApiName;
            string  vCtor;
    
    
        public CXmlFileHook()
        {
            this.vAppname = "Not Set";
            this.vIdmark = "Not Set";
            this.vClassname = "Not Set";
            this.vExecname = "Not Set";
            this.vApiName = new string[9] { "Not Set", "Not Set", "Not Set", "Not Set", "Not Set", "Not Set", "Not Set", "Not Set" ,"Not Set"};
    
            this.vCtor = "CXmlFileHook()";
    
        }
    

    1 回复  |  直到 14 年前
        1
  •  2
  •   Stefan Steinegger    14 年前

    仍然不确定你到底需要知道什么,所以这里有几个答案可以选择:-)

    C#中的数组不能更改其长度。如果需要动态集合,请使用集合类,例如。 List<T> .

    A 列表<T> 可以使用相同的语法初始化:

    this.vApiName = new List<string> 
      { 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set",
        "Not Set"
      };
    

    如果数组的长度在运行时没有改变,您可以使用它。在同时声明和初始化数组时,不需要指定数组的长度。长度由编译器确定(在运行时仍然是常量):

      this.vApiName = new string[] // <= no array-length, set to 9 by compiler
      { 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set", 
        "Not Set",
        "Not Set"
      };
    

    如果只想用null进行初始化,则不需要初始化默认值(请参见 this link ).

    this.vApiName = new string[9]; // array containing 9 x null