在Visual C#中,我不能公开公开课

时间:2008-11-21 17:09:00

标签: c# .net

我正在尝试在Visual C#中创建一个包含我创建的类的程序,并且在应用程序启动时它会创建一个我的类对象的数组,并且我的对象数组可以在整个程序中使用。因此,任何函数或控件的事件都可以访问对象数组及其成员变量。 我创建了我的类“公共”但由于某种原因我在构建时遇到这些错误: “当前上下文中不存在名称'MyArrayObjectNameHere'” 当我尝试访问加载文件对话框事件中的对象成员变量时,我试图将文件中的数据加载到对象数组的成员变量中。

是否需要声明和构造对象数组的某个位置,以便它存在于每个上下文中?如果是的话,你能告诉我这是哪里吗?

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

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

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

我在表单加载之前在main函数中声明了这样的对象数组:

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

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

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

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 

答案 1 :(得分:0)

在所有上下文中只有静态对象可用。虽然你的设计缺乏......呃,只是缺乏一般性,你可以这样做的方法是添加第二个静态类来维护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#。跳过前几章并阅读其余章节。

答案 2 :(得分:0)

您需要使数组成为某个类的静态成员,.NET不具有任何类之外的全局范围。

e.g。

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

然后您可以在A.MyArray

的任何地方访问它

答案 3 :(得分:0)

那不好。对我这样的学习者来说非常有用。