c# - 扩展的 GET SET 对象
问题描述
public class ZakazkandDTO
{
private decimal? _pcPevna;
private decimal? _sleva;
public decimal? PcPevna
{
get => _pcPevna;
set
{
_pcPevna = value;
if (_pcPevna.HasValue)
Sleva = PcSpec = 0;
}
}
public decimal? Sleva
{
get => _sleva;
set
{
_sleva = value;
if (_sleva.HasValue)
PcPevna = null;
}
}
public decimal? PcSpec { get; set; }
}
这是我的 DTO 对象,当我尝试设置属性 PcPevna 时它不起作用。为什么?
解决方案
因为设置PcPevna
一个值 != null 设置Sleva
为 0 并且它的 setter 又设置PcPevna
回null
.
将代码更改为
public decimal? PcPevna {
get => _pcPevna;
set {
_pcPevna = value;
if (_pcPevna.HasValue)
_sleva = PcSpec = 0;
}
}
public decimal? Sleva {
get => _sleva;
set {
_sleva = value;
if (_sleva.HasValue)
_pcPevna = null;
}
}
即,直接设置支持字段以避免再次触发其他属性的设置器。
推荐阅读
- python - 笔记本电脑在网络训练开始前就死机了
- rust - 为什么我不能将借来的值放在 Mutex 后面并将其传递给另一个线程?
- java - 从数组列表中搜索数据
- c - 需要帮助来查找分段错误错误
- python - 通过考虑多个值来拆分字符串
- arrays - 没有收到错误但没有看到输出
- docker - 将 keycloak docker 映像部署到 Heroku 时出错
- linux - 卷的 WSL2 Docker Linux 权限问题
- ruby-on-rails - 从多租户应用程序中的两个或多个模式访问数据
- javascript - 如果您在 javascript 中已到达数组的末尾,请从数组的开头重新开始