[英]How do I set a bool property using conditionals from other properties?
所以我有这些属性,我想根据这些设置另一个属性:
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
private bool _hasDateRange;
我想将_hasDateRange
设置为 true 或 false,具体取决于 StartDate 和 EndDate 是否不同于 null。
我想出的是这个,但它似乎不起作用;
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
private bool _hasDateRange;
public bool HasRange
{
get => _hasDateRange;
set
{
if (this.StartDate != null && this.EndDate != null)
{
this._hasDateRange = true;
}
else
{
this._hasDateRange = false;
}
}
}
你想要一个只能获取的属性。 为什么需要先调用 setter 来计算值? 任何属性的 setter 都应该将特殊变量value
的值赋给属性的支持字段,而不是忽略它。
您想要计算属性的返回值:
public bool HasRange
{
get
{
if (this.StartDate != null && this.EndDate != null)
{
return true;
}
else
{
return false;
}
}
}
支持字段 ( _hasDateRange
) 现在不再需要,可以删除。
可以将多个缩减步骤应用于属性的定义:
public bool HasRange
{
get
{
return this.StartDate != null && this.EndDate != null;
}
}
public bool HasRange
{
get => this.StartDate != null && this.EndDate != null;
}
public bool HasRange => this.StartDate != null && this.EndDate != null;
您可以使用只有 getter 的只读属性,而不是使用必须调用才能工作的 setter。 在 getter 的代码中,检查其他属性的值,您可以得到 go:
public bool HasRange
{
get => StartDate.HasValue && End date.HasValue;
}
每当请求HasRange
的值时,都会根据其他属性对其进行评估,因此值不会不同步
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.