不能创建静态类'diamondmine.MyObject'的实例

本文关键字:实例 MyObject diamondmine 不能 创建 静态类 | 更新日期: 2023-09-27 17:50:55

刚刚尝试创建ArrayList并填充对象,但遇到这个错误:

不能创建静态类diamondmine的实例。MyObject '

目前的代码:

public static class MySettings
{
  //some lines
  public static ArrayList myObjects { get; set; }
  static MySettings()
  {
    //some lines
    myObjects = new ArrayList();
  }
}
public static class MyObject
{
  public static int a { get; set; }
  public static int b { get; set; }
  static MyObject()
  {
    a = 1;
    b = 2;
  }
}

我是这样添加一个新对象的:

//some code
MySettings.myObjecs.Add(new MyObject());
//more code

我不知道问题在哪里,我正在做MSDN中写的事情:(

不能创建静态类'diamondmine.MyObject'的实例

错误提示不能创建静态类的实例。

你的MyObject类不应该是静态的,否则你可以创建它的实例。

查看此处获取更多关于静态和非静态的信息:静态与非静态类成员

要回答注释中的问题,您的代码将以这样的方式结束:

public static class MySettings
{
  //some lines
  public List<MyObject> myObjects { get; set; }
  static MySettings()
  {
    //some lines
    myObjects = new List<MyObject>();
  }
}
public class MyObject
{
  public int a { get; set; }
  public int b { get; set; }
  public MyObject()
  {
    a = 1;
    b = 2;
  }
}

那么用法是:

MySettings.myObjects.Add(new MyObject());
MySettings.myObjects[0].a; // returns 1

用这样的东西替换你的代码:

public static class MySettings
{
  //some lines
  public static ArrayList MyObjects { get; private set; }
  static MySettings()
  {
    //some lines
    MyObjects = new ArrayList();
  }
}
public class MyObject
{
  public int a { get; set; }
  public int b { get; set; }
  public MyObject()
  {
    a = 1;
    b = 2;
  }
}

注意,MyObjectsprivate set