2015-11-02 88 views
-3

我想打印價格在10到50歐元之間的所有產品。 我在main中創建了2個產品,我爲了進行驗證而調用了類Product中的方法。但是它每次都會給我else分支,「沒有產品」。我明白我做錯了什麼,我創建了一個來自類Product的對象引用,然後我調用該方法,但它給了我錯誤的輸出,因爲在該方法中,我創建了另一個對象,對於此對象,此價格爲0,因此它向我顯示了該事情。 但我該如何解決這個問題? 這裏有類: 產品類:如何解決C#中的空對象引用?

class Product 
{ 
    public int ProductId; 
    public string SKU; 
    public string Name; 
    public decimal Price; 
    public string Description; 
    public string Producer; 
    public virtual decimal GetPrice() 
    { 
     return Price; 
    } 
    public virtual String GetName() 
    { 
     return Name; 
    } 
    public void PrintPrice() 
    { 
     Product f = new Product(); 
     if (f.GetPrice() > 10 && f.GetPrice() < 50) 

      Console.WriteLine("Product: {0}", f.GetName()); 

     else 
      Console.WriteLine("No products priced between 10 and 50 lei."); 
    } 
    public Product() { } 

主要的,我一直在創建對象:

static void Main(string[] args) 
    { 
     Product f = new Food(1, "green", "Papa", 15, "Good Quality", "Sana"); 
     Product f1 = new Food(2, "white", "Papa1", 45, "Bad Quality", "Ariel"); 

     f.PrintPrice(); 
     f1.PrintPrice(); 
    } 

和我也有食品類,但它繼承只有產品類所以這裏沒有關係。所以我能做什麼?謝謝。

+1

if .GetPrice()> 10 && this.GetPrice()<50),刪除f 宣言。 – Oscar

+4

用'this'替換'f'。 –

+0

@PatrickHofman完全刪除'f.'。 – DavidG

回答

3
public void PrintPrice() 
    { 
     Product f = new Product(); 
     .... 
    } 

目前,f是一個新的產品,而不

你應該這樣做

public void PrintPrice() 
{ 
    if (this.GetPrice() > 10 && this.GetPrice() < 50) 

     Console.WriteLine("Product: {0}", this.GetName()); 

    else 
     Console.WriteLine("No products priced between 10 and 50 lei."); 
} 
-1

你沒有一個值分配給價格的任何屬性(包括沒有價格)如果(f.GetPrice()> 10 && f.GetPrice()<50)應該是:if(this(this this)is 0,then have the「No products」..試着給產品分配一個值

相關問題