Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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# “C”;非静态字段“需要对象引用”;带有静态成员函数的类问题_C#_Visual Studio 2008 - Fatal编程技术网

C# “C”;非静态字段“需要对象引用”;带有静态成员函数的类问题

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

我正在为学校做一个项目(准备攻读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
    }//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^我真不敢相信我遗漏了这么多。谢谢你,伙计,谢谢你,真不敢相信我错过了这么多。谢谢你,伙计。