繁体   English   中英

如何使用来自其他属性的条件来设置 bool 属性?

[英]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 ) 现在不再需要,可以删除。

可以将多个缩减步骤应用于属性的定义:

第1步

public bool HasRange
{
    get
    {
        return this.StartDate != null && this.EndDate != null;
    }
}

第2步

public bool HasRange
{
    get => this.StartDate != null && this.EndDate != null;
}

步骤 3

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM