📌  相关文章
📜  属性 'products' 没有初始化程序,也没有在构造函数中明确分配. (1)

📅  最后修改于: 2023-12-03 14:53:57.501000             🧑  作者: Mango

属性 'products' 没有初始化程序,也没有在构造函数中明确分配.

在面向对象编程语言中,类的属性是指类中的变量。当属性被定义时,编译器会为它分配内存空间,但是在声明属性时,默认情况下该属性是没有被初始化的。这就意味着在使用该属性之前,需要先对其进行初始化。

如果在使用该属性之前没有进行初始化,那么就会抛出上述的编译错误,即“属性 'products' 没有初始化程序,也没有在构造函数中明确分配.”

下面是一个示例代码:

class Store {
  private string[] products;
  
  public void AddProduct(string product) {
    products.Add(product);
  }
}

class Program {
  static void Main() {
    Store store = new Store();
    store.AddProduct("Shoes");
  }
}

在上面的示例代码中,我们定义了一个 Store 类,其中有一个 products 属性,该属性是 string 类型的数组。但是我们没有在该属性中对其进行初始化,也没有在构造函数中明确分配。这就会导致编译错误。

为了解决这个问题,我们可以在构造函数中对该属性进行初始化,例如:

class Store {
  private string[] products;
  
  public Store() {
    products = new string[10];
  }
  
  public void AddProduct(string product) {
    products.Add(product);
  }
}

class Program {
  static void Main() {
    Store store = new Store();
    store.AddProduct("Shoes");
  }
}

在上面的代码中,我们在 Store 类的构造函数中对 products 属性进行了初始化。这样就可以避免编译错误了。

总结一下,避免 “属性 'products' 没有初始化程序,也没有在构造函数中明确分配.” 这个编译错误的方法有两种。一种是在定义属性的时候进行初始化,另一种是在构造函数中对属性进行初始化。