由于溢出,进程终止

时间:2015-08-09 10:48:42

标签: c# .net

由于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";

如果我直接指定打印机名称,则不会出现此问题。

请帮忙

2 个答案:

答案 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; }