调用类内的替身

本文关键字:替身 调用 | 更新日期: 2023-09-27 17:49:49

你好,

我试着把班里的双倍付费称为"钱包"但当我尝试这样做时,它会出现以下错误:

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;

调用类内的替身

因为Paying是静态的,所以不需要创建类的实例来访问属性。试试这个(看看我是如何访问Program.Paying的(:

class Wallet
{
    public double WalletCustomer = 100;
    public void Pay()
    {
        WalletCustomer = (WalletCustomer - Program.Paying);            
    }
  }
}

对于static成员,您需要使用class名称而不是instance

WalletCustomer = (WalletCustomer - Program.Paying);         

使用类名访问静态类的成员它本身例如,如果您有一个名为具有名为MethodA的公共方法的UtilityClass,可以调用方法如下,MSDN。

UtilityClass.MethodA();

出现此错误是因为您正试图从静态类访问非静态成员。解决方案:将您的成员标记为静态,或者将Calling函数更改为Non-static。或使用类名访问您的非静态成员这是怎么做的?

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;

根据LeakyCode,在C#中,与VB.NET和Java不同,您不能使用实例语法访问静态成员。你应该做:

MyClass.MyItem.Property1

引用该属性或从Property1中删除静态修饰符(这可能是您想要做的(。关于什么是静态的概念,请参阅我的另一个答案。

Poom