Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Visual C中,我无法将我的公共类公开_C#_.net - Fatal编程技术网

C# 在Visual C中,我无法将我的公共类公开

C# 在Visual C中,我无法将我的公共类公开,c#,.net,C#,.net,我正试图在Visual C中制作一个程序,其中包含我创建的一个类,在应用程序启动时,它会创建一个我的类对象数组,这个对象数组可以在整个程序中使用。因此,任何函数或控件的事件都可以访问对象数组及其成员变量。 我将我的类创建为“public”,但由于某些原因,我在生成时出现以下错误: “当前上下文中不存在名称“MyArrayObjectNameHere” 当我试图访问加载文件对话框事件中的对象成员变量时,我试图将数据从文件加载到对象数组的成员变量中 是否有一个特定的位置需要声明和构造对象数组,以便它

我正试图在Visual C中制作一个程序,其中包含我创建的一个类,在应用程序启动时,它会创建一个我的类对象数组,这个对象数组可以在整个程序中使用。因此,任何函数或控件的事件都可以访问对象数组及其成员变量。 我将我的类创建为“public”,但由于某些原因,我在生成时出现以下错误: “当前上下文中不存在名称“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();
}
MyClass[]MyArrayObject;
MyArrayObject=新的MyClass[50];
对于(int i=0;i<50;i++)
{
MyArrayObject[i]=新的MyClass();
}

提前感谢您的帮助。

所有上下文中只有静态对象可用。虽然你的设计缺乏。。。呃,一般来说,您可以添加第二个静态类来维护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;

    }
  }
}
公共静态类MyClassManager
{
私人MyClass[]\u MyClass;
公共MyClass[]MyClassArray
{
收到
{
如果(_myclasses==null)
{
_MyClass=新的MyClass[50];
对于(int i=0;i<50;i++)
_MyClass[i]=新的MyClass();
}
返回我的类;
}
}
}

你自己做一个fav,通过杰弗里·里克特的C#抓住CLR。跳过前几章,阅读其余部分。

所有上下文中只有静态对象可用。虽然你的设计缺乏。。。呃,一般来说,您可以添加第二个静态类来维护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;

    }
  }
}
公共静态类MyClassManager
{
私人MyClass[]\u MyClass;
公共MyClass[]MyClassArray
{
收到
{
如果(_myclasses==null)
{
_MyClass=新的MyClass[50];
对于(int i=0;i<50;i++)
_MyClass[i]=新的MyClass();
}
返回我的类;
}
}
}

你自己做一个fav,通过杰弗里·里克特的C#抓住CLR。跳过前几章,阅读其余部分。

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

e、 g


然后,您可以将其作为.MyArray访问到任何地方

您需要使该数组成为某个类的静态成员

e、 g


然后,您可以在任何地方以.MyArray的形式访问它

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

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 公共部分类Form1:Form { MyClass[]MyArrayObject;//在这里声明它,它将在任何地方都可用 公共表格1() { //在这里实例化它 MyArrayObject=新的MyClass[50];
对于(int i=0;i您的问题是您在主函数中定义它,因此它将只存在于主函数中。您需要在类中定义它,而不是在函数中定义它

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 公共部分类Form1:Form { MyClass[]MyArrayObject;//在这里声明它,它将在任何地方都可用 公共表格1() { //在这里实例化它 MyArrayObject=新的MyClass[50];
对于(int i=0;i这不好。它对像我这样的学习者非常有用。

这不好。它对像我这样的学习者非常有用