您好,
我试图在课堂上拨打双倍费用"电子钱包" 但是当我尝试这样做时会出现这个错误:
Member'Mc_DOnalds.Program.Paying' cannot be accessed with an instance reference; qualify it with a type name instead.
这是在钱包类中。
class Wallet
{
public double WalletCustomer = 100;
Program Betalen = new Program();
public void Pay()
{
WalletCustomer = (WalletCustomer - Betalen.Paying);
}
}
}
这是在Program.cs
中 public static double Paying = 0;
答案 0 :(得分:4)
由于Paying
是静态的,因此您无需创建类的实例来访问该属性。试试这个(看看我如何访问Program.Paying
):
class Wallet
{
public double WalletCustomer = 100;
public void Pay()
{
WalletCustomer = (WalletCustomer - Program.Paying);
}
}
}
答案 1 :(得分:2)
对于static
会员,您需要使用class
名称代替instance
WalletCustomer = (WalletCustomer - Program.Paying);
使用类名访问静态类的成员 本身。例如,如果您有一个名为的静态类 具有名为MethodA的公共方法的UtilityClass,您调用 方法如下,MSDN。
UtilityClass.MethodA();
答案 2 :(得分:1)
此错误即将发生,因为您尝试从静态类访问非静态成员。 解决方案:将您的成员标记为静态或将您的通话功能更改为非静态。 或使用类名访问您的非静态成员 这是怎么回事?
class Wallet
{
public static double WalletCustomer = 100;
Program Betalen = new Program();
public void Pay()
{
WalletCustomer = (WalletCustomer - Betalen.Paying);
}
}
或
class Wallet
{
public double WalletCustomer = 100;
Program Betalen = new Program();
public void Pay()
{
WalletCustomer = (WalletCustomer - Betalen.Paying);
}
}
在您的主程序中
Program.Paying = 0;
答案 3 :(得分:0)
根据LeakyCode,在C#中,与VB.NET和Java不同,您无法使用实例语法访问静态成员。你应该这样做:
MyClass.MyItem.Property1
引用该属性或从Property1
中删除静态修饰符(这可能是您想要做的)。有关静态的概念,请参阅我的其他答案。
POOM