Note:该代码适用于 Windows 11 (22000.1098) 及更早版本,但会在 Windows 11 (22621.525) 上导致堆栈溢出异常
我有一个错误,导致我负责的 C# 程序出现大量问题。它在早期的 Windows 版本(包括早期的 Windows 11)中运行良好。它也适用于调试版本。但它在发布版本中引发异常。我已经深入到出现问题的各个功能,这很奇怪。
代码是这样的
MySettings.MySetting setting = new MySettings.MySetting()
{
Value = Double.NaN,
Values = new double[] { Double.NaN },
Special = "" }
});
但如果我将 Double.NaN 更改为数值,则代码可以工作。
我试图将其简化为
MySettings.MySetting setting = new MySettings.MySetting();
set1.Value = Double.NaN;
set1.Values = new double[] { Double.NaN };
set1.Special = "";
删除 Special 不会改变任何内容,但如果 Value 或 Values 为 NaN,则会引发异常。
最小形式的设置类是
public class MySetting
{
public Double Value { get; set; }
public string Special { get; set; }
public Double[] Values { get; set; }
public ValueSpecial[] Specials { get; set; }
public ValueSpecial AddSpecial(string code, string value)
{
ValueSpecial special = new ValueSpecial() { Code = code, Value = value };
return special;
}
public void ForgetSpecial(string code)
{
}
public override string ToString()
{
return "Not today";
}
}
ValueSpecial 非常简单
public class ValueSpecial
{
public string Code { get; set; }
public string Value { get; set; }
public override string ToString()
{
return "dummy";
}
}
调用堆栈看起来很无辜。 Main() -> MainForm() -> InitializeComponent() -> MyControl() 所以它似乎没有发生任何递归。
Microsoft 在此版本的 Windows 中更改了哪些内容?我该如何解决?
请注意,相同的二进制文件适用于 Windows 11 22000.1098,因此不要只关注代码。
看起来像https://stackoverflow.com/a/25208200/1771388 https://stackoverflow.com/a/25208200/1771388或许可以给出答案。