进程因溢出而终止

本文关键字:终止 溢出 进程 | 更新日期: 2023-09-27 18:07:07

由于stackoverflow导致进程终止。

如果我使用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";

如果我直接分配打印机名称,就不会出现这个问题。

请帮

进程因溢出而终止

您的printer_name属性正在引起无限递归。使用auto属性代替:

public String printer_name { get; set; }

这是因为在你的属性printer_name setter中,你调用了this.printer_name = value;,它再次调用了相同的属性setter,并且它持续了很多次。

为了解决这个问题,你需要引入一个具有不同名称的变量,例如:

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

很可能你正在使用。net 2.0或更高版本,在这种情况下,上面的代码可以简化为一行:

public String printer_name { get; set; }