C# “C”;非静态字段“需要对象引用”;带有静态成员函数的类问题
我正在为学校做一个项目(准备攻读CIS学士学位),我在课堂上遇到了这个问题C# “C”;非静态字段“需要对象引用”;带有静态成员函数的类问题,c#,visual-studio-2008,C#,Visual Studio 2008,我正在为学校做一个项目(准备攻读CIS学士学位),我在课堂上遇到了这个问题 public static int GetNumberCreated() { // return the total number of airplanes created using the class as the blueprint return numberCreated; // returns the number of airplanes created
public static int GetNumberCreated()
{
// return the total number of airplanes created using the class as the blueprint
return numberCreated; // returns the number of airplanes created
}//end of public int GetNumberCreated()
这是一个程序返回到目前为止您在这个小型C#程序中制造了多少架飞机的值。
我在开始时声明numberCreated:
private int numberCreated;
我得到了一个典型的错误“非静态字段、方法或属性需要对象引用”,我做了大量的研究试图弄清楚到底发生了什么,但我什么也没想到
但是,我在类的底部设置了一个属性,以便窗体能够访问变量:
public int NumberCreated { get; set; }
我还尝试将属性更改为:
public int NumberCreated { get { return numberCreated; } set { numberCreated = value; } }
没有运气。>.>'
我做错了什么?您需要将创建的整数声明为静态
eg public static int NumberCreated {get;set;}
可以从非静态方法访问静态成员,但不能从静态方法访问非静态成员。例如,实例变量不能从静态方法访问。您需要将创建的int数声明为static
eg public static int NumberCreated {get;set;}
可以从非静态方法访问静态成员,但不能从静态方法访问非静态成员。例如,实例变量不能从静态方法访问。这是一件简单的事情-您需要在方法签名之前添加“static”关键字,如下所示:
public static int NumberCreated { get; set; }
然后您可以按如下方式递增/递减:
AirplaneFactory.NumberCreated++ / AirplaneFactory.NumberCreated--
这很简单-您需要在方法签名之前添加“static”关键字,如下所示:
public static int NumberCreated { get; set; }
然后您可以按如下方式递增/递减:
AirplaneFactory.NumberCreated++ / AirplaneFactory.NumberCreated--
GetNumberCreated
是一种静态方法。numberCreated
是使用此类对象创建的变量。因此,静态方法不知道在哪里查找,因为没有这样的变量
您需要一个
私有静态int
GetNumberCreated
是一个静态方法。numberCreated
是使用此类对象创建的变量。因此,静态方法不知道在哪里查找,因为没有这样的变量
您需要一个
私有静态int
简言之,即使“numberCreated”尚未出现,也可以调用静态方法。编译器告诉你,你正在试图归还一个婴儿,而事先没有任何保证它已经出生
将numberCreated更改为静态属性,它将被编译。简而言之,即使“numberCreated”尚未出现,也可以调用静态方法。编译器告诉你,你正在试图归还一个婴儿,而事先没有任何保证它已经出生
将numberCreated更改为静态属性,它将被编译。谢谢^ u^我真不敢相信我遗漏了这么多。谢谢你,伙计,谢谢你,真不敢相信我错过了这么多。谢谢你,伙计。