我有一个调试器的屏幕截图,其中我可以将本地小数设置为该值,并且我在调试器中看到它已设置,但设置器的私有小数变量未设置为该值。这是 VS 2022 的问题吗?无法想象这样的事情。当然,这对我们来说是新行为。
我尝试了舍入,但我检查了最大精度和所有这些,一切都很好。如上所述,我确实尝试将值设置为本地十进制(测试),然后就成功了。但是声明的私有十进制类变量不会被设置,并且具有设置器的公共十进制变量也不会被设置。它仍然是 0。就像我说的,这曾经有效。
您的手表表达式正在访问您的 getter,并且每次通过时您的 getter 都会重新初始化。
如果您希望 getter 在 get 没有值时初始化:
private decimal? _val = null;
public decimal Val
{
get { _val ??= getValueFromInstance(...); }
set { _val = value; }
}