在课堂上调用双精度

时间:2014-03-13 08:50:53

标签: c#

您好,

我试图在课堂上拨打双倍费用"电子钱包" 但是当我尝试这样做时会出现这个错误:

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;

4 个答案:

答案 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