我没有使用C#的经验,但作为我们大学模块的一部分,我们必须创建一个老虎机应用程序。我们创建了一个Gambler类,我必须创建一个CheckBalance类,我将从Gambler类中调用Token方法。但我得到了线程标题中提到的错误。
Int tokens = Gambler.Tokens;
以上一行是我收到错误的地方。 这是我的代码:
enter code herenamespace CasinoClasslibrary
{
public class Gambler
{
public string Name { get; private set; }
public int Age { get; private set; }
public long CreditCardNum { get; private set; }
public int Tokens { get; public set; }
public string Username { get; private set; }
public string Password { private get; public set; }
public Gambler(string Name, int Age, long CreditCardNum, int Tokens, string Username, string Password)
{
this.Name = Name;
this.Age = Age;
this.CreditCardNum = CreditCardNum;
this.Tokens = Tokens;
this.Username = Username;
this.Password = Password;
}
}
public class Cashout : Gambler
{
public Boolean CheckBalance()
{
int tokens = Gambler.Tokens;
return true;
}
}
}
答案 0 :(得分:1)
由于您继承自Gambler
,我怀疑您需要访问base.Tokens,如:
public Boolean CheckBalance()
{
int tokens = base.Tokens; //here
return true;
}
否则,因为Toakens
是实例成员,您必须创建Gambler
的对象然后访问它。
您的代码中还有其他错误。您尚未在基类中定义默认的(参数少)构造函数,并且需要在子类中调用现有的基础构造函数。
public class Cashout : Gambler
{
public Cashout()
: base("",0, 0, 1, "", "") //something like this
{
}
public Boolean CheckBalance()
{
int tokens = base.Tokens;
return true;
}
}
答案 1 :(得分:1)
因为Cashout继承自Gambler,你可以这样做。这是因为Cashout
实例也将具有Tokens
属性。
public class Cashout : Gambler
{
public Boolean CheckBalance()
{
int tokens = Tokens;
return true;
}
}
但是,如果您希望该方法是静态的,则需要Gambler
的实例来访问该属性,并且应该将其传递给静态方法。
public class Cashout : Gambler
{
public static Boolean CheckBalance(Gambler myGambler)
{
int tokens = myGambler.Tokens;
return true;
}
}
最后,如果您希望此Tokens
属性本身是静态的,则需要将其声明为
public static int Tokens;
您可能还需要静态构造函数来设置它。
答案 2 :(得分:1)
Tokens
不是静态方法,但是您尝试通过静态构造(类级别)访问它。
可以通过将其声明为静态来实现这一点(尽管这不太可能是你想要的)
public static int Tokens { get; public set; }
或通过实例化Gambler
new Gambler().Tokens;