2015-08-09 106 views
-1

進程因堆棧溢出而終止。由於溢出導致進程終止

如果我使用C#訪問器來獲取打印機名稱,它將導致stackoverflow。

Receipt.cs 


public String printer_name 
     { 
      set { this.printer_name = value; } 
      get { return this.printer_name; } 
     } 

Program.cs 

    receipt.amount = 101; 
    receipt.drawnBy = "haha"; 
    receipt.printer_name = @"RP80 Printer"; 

如果我直接分配打印機名稱,它不會得到這個問題。

請幫

回答

1

printer_name屬性導致無限遞歸。因爲在你的財產printer_name二傳手你調用this.printer_name = value;,這再次調用同一個屬性的setter

public String printer_name { get; set; } 
0

這是它繼續多次:使用自動屬性。

爲了解決它,你需要引入變量具有不同的名稱,例如:

private string _printerName; 
public String printer_name 
{ 
    set { this._printerName = value; } 
    get { return this._printerName; } 
} 

很可能正在使用.NET 2.0或更高版本,在這種情況下,上面的代碼可以簡化爲單行:

public String printer_name { get; set; } 
相關問題