由于stackoverflow,进程终止。
如果我使用C#访问器获取打印机名称,则会导致堆栈溢出。
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";
如果我直接指定打印机名称,则不会出现此问题。
请帮忙
答案 0 :(得分:1)
您的printer_name
属性导致无限递归。请改用自动属性:
public String printer_name { get; set; }
答案 1 :(得分:0)
这是因为在您的属性printer_name
设置器中,您正在调用this.printer_name = value;
,它再次调用相同的属性设置器并继续多次。
为了解决这个问题,您需要引入一个具有不同名称的变量,例如:
private string _printerName;
public String printer_name
{
set { this._printerName = value; }
get { return this._printerName; }
}
您很可能使用的是.NET 2.0或更高版本,在这种情况下,上面的代码可以简化为一行:
public String printer_name { get; set; }