English 中文(简体)
在Visual C#中,我无法使我的公共类成为公共类。
原标题:
  • 时间:2008-11-21 17:08:59
  •  标签:

I m trying to make a program in Visual C# that has my one created class, and at application launch it creates an array of my class object, and this array of my object can be used all over the program. So any function, or a control s event can access the array of objects and their member variables. I created my class as "public" but for some reason i get these errors upon build: "The name MyArrayObjectNameHere does not exist in the current context" When I try to access the objects member variables inside a load file dialog event in which I am trying to load data from a file into the member variables of the object array.

对象数组需要在特定位置声明和构造,以便在每个上下文中存在吗?如果是,请告诉我在哪里?

我目前在主函数中声明它,在form1运行之前。

我的班级定义在自己的.cs文件和程序命名空间中看起来像这样:

public class MyClass
{
    public int MyInt1;
    public int MyInt2;
}

我在表单加载之前,在主函数内部声明对象数组。

MyClass[] MyArrayObject;
MyArrayObject = new MyClass[50];
for (int i = 0; i < 50; i++)
{
    MyArrayObject[i] = new MyClass();
}

提前感谢任何帮助。

最佳回答

你的问题是你在主函数中定义它,因此它只存在于主函数中。你需要在类内部定义它,而不是在函数内部定义。

public partial class Form1:Form
{
MyClass[] MyArrayObject; // declare it here and it will be available everywhere

public Form1()
{
 //instantiate it here
 MyArrayObject = new MyClass[50];
 for (int i = 0; i 
问题回答

只有静态对象在所有上下文中可用。尽管您的设计缺乏……呃,在一般情况下缺乏,您可以添加第二个静态类来维护MyClass的数组:

public static class MyClassManager
{
  private MyClass[] _myclasses;
  public MyClass[] MyClassArray
  {
    get
    {
      if(_myclasses == null)
      {
      _myClasses = new MyClass[50];
      for(int i = 0; i < 50;i++)
        _myClasses[i] = new MyClass();
      }
      return _myclasses;

    }
  }
}

给自己一个建议,拿着Jeffrey Richter的CLR Via C#。跳过前几章,读后面的。

你需要将数组设置为某个类的静态成员,.NET 在任何类外部都没有全局作用域。

例如。

class A
{
    public static B[] MyArray;
};

你可以使用 A.MyArray 在任何地方访问它。

那很好。对像我这样的学习者很有用。





相关问题
热门标签