0

こんにちは、メインからこのコードを使用してコンソールを起動すると、アイテムが 2 回表示されるかどうかわかりません。ループ メソッドがまったくないためです。

        FoodProducts FoodProd1 = new FoodProducts("FP001", "Meat", 15.99, 200, 100, "Australia");
        FoodProducts FoodProd2 = new FoodProducts("FP002", "Bread", 2.99, 150, 50, "Italy");

        FoodProd1.Print();
        FoodProd2.Print();

class FoodProducts : Products
{

    private string origin;

    public FoodProducts(string id, string name, double price, int soldCount, int stockCount, string origin)
        : base(id, name, price, soldCount, stockCount)
    {
        this.origin = origin;
        //Need to find out why this code prints both lines and not in single line and why it starts from Product 2 when it is printed on the console
        PrintOrigin();
    }

    private string Origin
    {
        get { return origin; }
        set { origin = value; }
    }

    public void PrintOrigin()
    {
        base.Print();
        Console.WriteLine("Origin: {0}", this.Origin);

    }

コメントから更新

Print()基本クラスで定義されているメソッド:

public void Print() { 
   Console.WriteLine("Product ID: {0}", this.id); 
   Console.WriteLine("Product Name: {0}", this.name);
   Console.WriteLine("Prodcut Price: {0}", this.price); 
   Console.WriteLine("Sold Counter: {0}", this.soldCount); 
   Console.WriteLine("Stock Count: {0}", this.stockCount); 
   Console.WriteLine(); 
   Console.ReadKey(); 
}
4

1 に答える 1

6

出力をどのように見せたいかは本当に不明です。以前の質問に基づいて製品クラスをまとめました。その出力は次のようになります。

ここに画像の説明を入力

ご覧のとおり、前述のように情報を 2 回出力します。不明なのは、呼び出しを行うたびにオリジンを印刷するかどうかです。その場合PrintOriginは、Print メソッドの代わりにメソッドを呼び出します。それ以外の場合は、構築時に原点のみを出力する場合は、Printメソッドからメソッド呼び出しを取得しPrintOriginます。

最初の例は、Print の代わりに PrintOrigin を呼び出し、コンストラクターから PrintOrigin ステートメントを削除します。

ここに画像の説明を入力

メソッドの呼び出しを PrintOrigin ではなく Print として保持したい場合は、Base Method Virtual を宣言してオーバーライドします。すなわち

class Program
{
    static void Main(string[] args)
    {
        FoodProducts FoodProd1 = new FoodProducts("FP001", "Meat", 15.99, 200, 100, "Australia");
        FoodProducts FoodProd2 = new FoodProducts("FP002", "Bread", 2.99, 150, 50, "Italy");

        FoodProd1.Print();
        FoodProd2.Print();

        Console.ReadLine();
    }
}

public class Products 
{ 
    string id; 
    string name; 
    double price; 
    int soldCount; 
    int stockCount; 

    public Products(string id, string name, double price,  
                      int soldCount, int stockCount) 
    { 
        this.id = id; 
        this.name = name; 
        this.price = price; 
        this.soldCount = soldCount; 
        this.stockCount = stockCount; 
    }

    public virtual void Print()
    {
        Console.WriteLine("Product ID: {0}", this.id);
        Console.WriteLine("Product Name: {0}", this.name);
        Console.WriteLine("Prodcut Price: {0}", this.price);
        Console.WriteLine("Sold Counter: {0}", this.soldCount);
        Console.WriteLine("Stock Count: {0}", this.stockCount);
        Console.WriteLine();
    } 

}

class FoodProducts : Products
{

    private string origin;

    public FoodProducts(string id, string name, double price, int soldCount, int stockCount, string origin)
        : base(id, name, price, soldCount, stockCount)
    {
        this.origin = origin;
    }

    private string Origin
    {
        get { return origin; }
        set { origin = value; }
    }

    public override void Print()
    {
        base.Print();
        Console.WriteLine("Origin: {0}", this.Origin);
    }

}
于 2012-08-30T02:17:41.767 に答える