我是尝试理解类以及类如何工作的新手。我正在构建一个小型控制台程序,当前正在处理名为“ LineItem.cs”的“ class.cs”文件,因为它将处理我试图让控制台应用程序生成的收据上的行项目。
问题:无法使用实例引用访问成员'A070_Classes_CashRegister.Program.receipt()';而是使用类型名称对其进行限定。 (错误行:#21 /第13列)
当我输入'this.color = price;时,我以为是在第21行上完成的。
码:
using System;
namespace a070___Classes___CashRegister
{
class LineItem // Class name is singular
// receipt might be better name for this class?
{
/// Class Attributes
private String product; // constructor attribute
private String description;
private String color;
private double price;
private Boolean isAvailable;
// constructor called to make object => LineItem
public LineItem(String product, String description, String color, int price, Boolean isAvailable)
{
this.product = product;
this.description = description;
this.color = color;
this.price = price;
this.isAvailable = isAvailable;// might want to do an availability check
}
//Getters
public String GetProduct() {return product;}
public String GetDescription(){return description;}//Send description
public String GetColor() {return color;}
//Setter
public void SetColor(string color)//we might want to see it in other colors if is option
{ this.color = color; } //changes object color
}
}
主文件将调用该类:
using System;
namespace a070___Classes___CashRegister
{
class Program
{
static void receipt()
{
//stuff goes here - we call various instances of the class to generate some receipts
}
static void Main(string[] args)
{
//Program CashRegister = new Program();
//CashRegister.receipt();
//Program CashRegister = new Program();
//CashRegister.receipt();
receipt();// Don't need to instantiate Program, console applications framework will find the static function Main
//unless changed your project properties.
//Since reciept is member od Program and static too, you can just call it directly, without qualification.
}
}
}
最佳答案
Program CashRegister = new Program();
CashRegister.receipt();
应该
Program.receipt();
要不就
receipt();
您无需实例化
Program
,使用控制台应用程序,框架将找到static function Main(...
并通过魔术调用,除非您更改了项目属性。由于
receipt
也是Program
和static
的成员,因此您可以直接调用它而无需资格。receipt()
函数是static
,但是您正在尝试从实例调用它。您没有显示
receipt
的声明位置或调用位置,因此我无济于事。也许您有一行代码,在其中某处有一个表达式,
... this.receipt() ...
要么
... yourInstance.receipt() ...
但应该是
... Type.receipt() ...