0

我有以下代码:

public class UserRepository 
{       
    private MyDataSource myDataSource = new MyDataSource();

    public static User CreateUser( int id, String firstName, String lastName )
    {
         myDataSource.propertyOfThis...
         // myDataSource is not accessible and yet i have declared it as a property of UserRespository?
    }
...

我在这里想念什么?

4

6 回答 6

4

myDataSource不是static

private MyDataSource myDataSource = new MyDataSource();

但是CreateUserstatic

public static User CreateUser( int id, String firstName, String lastName )

所以 makemyDataSource static或 removeCreateUserstatic修饰符。

哦,或者一个new UserRepository()

于 2013-07-02T13:06:31.243 回答
2

您需要将 myDataSource 设为静态。可以在不创建实例的情况下调用静态方法,并且由于 myDataSource 是实例变量,因此它不可访问。

于 2013-07-02T13:07:52.510 回答
0

您的方法CreateUser是静态的,而MyDataSource是一个实例字段

于 2013-07-02T13:06:33.020 回答
0

问题是您的字段不是static,但您正在static方法中使用它。

问题是static方法不是在类(对象)的实例上执行,而是在类本身上执行。字段仅存在于对象中。因此,该方法不必是静态的,或者字段应该是静态的。取决于您的用例。

于 2013-07-02T13:06:41.927 回答
0

你的方法是static。如前所述,您不能从静态方法中访问非静态方法或变量。

这样做的原因是静态成员和方法可以在没有实例化类的情况下访问。但是,那些非静态(又名“实例”)变量属于该类的特定实例。因此,您必须有一个实例化的对象来引用才能获取变量。

this如果您在静态代码块中,那么出于同样的原因,您不能使用关键字。this指的是该类的特定实例化对象。

于 2013-07-02T13:10:49.923 回答
0

*问题是您的字段不是静态的,但您在静态方法中使用它。*问题是静态方法不是在类(对象)的实例上执行,而是在类本身上执行。

于 2013-07-02T13:18:42.950 回答