2015-08-09 99 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; } 
相关问题