我正在尝试在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();
}
提前感谢您的帮助。
答案 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)
那不好。对我这样的学习者来说非常有用。