gpt4 book ai didi

C# 构造函数 - 设置第二个属性

转载 作者:行者123 更新时间:2023-11-30 13:33:34 24 4
gpt4 key购买 nike

我有这门课:

public class CalendarData_Day
{
public DateTime Date { get; set; }
public DayType TypeOfDay { get; set; }
public bool Choose { get; set; }

public CalendarData_Day(DateTime datum) : this(datum, DayType.Normal, true)
{
}

public CalendarData_Day(DateTime datum, DayType typDne) : this(datum, typDne, true)
{
}

public CalendarData_Day(DateTime datum, DayType typDne, bool vybran)
{
this.Date = datum;
this.TypeOfDay = typDne;
this.Choose = vybran;
}
}

我想在第二个构造函数中检查 DayType 是否为 Weekend,如果不是,则不发送至 Choose true but false。任何人都知道我该怎么做?我知道我可以添加到最后一个构造函数 if 并检查但它似乎不适合我。我认为有更好的方法,我认为我应该以其他方式进行,或者在最后一个构造函数中是否可以:

if (TypeOfDay == DayType.Weekend)
this.Choose = false;

我知道它有效,但我不知道这是正确的方法。

编辑:很抱歉我没有解释一切。有超过 2 个 DayTypes,可以说有 Holiday,Work,......我希望用户可以只用第二个构造函数调用类,如果 DayType 是 Weekend 或 Holiday 那么 Choose 必须是 false 但如果它是 Normal 或Work 它应该是 true 或用户必须使用最后一个构造函数并将 DayType 设置为 Work 并将 Choose 设置为 false。这很复杂我很抱歉我应该第一次写这个。

最佳答案

根据参数传递链式构造函数参数会更好:

public CalendarData_Day(DateTime datum, DayType typDne)
: this(datum, typDne, typeDne != DayType.Weekend)
{
}

这样您就不需要将属性设置两次 - 一次设置为某种默认值,然后根据您已知的信息修复它。

我个人会将参数名称从 typDne 更改为 dayType 或类似名称。

编辑:我刚刚看到您正在考虑将您的测试放入最后 构造函数而不是第二 构造函数。我希望调用者为 vybran 提供的值按原样接受,而不是有条件地忽略。您只描述希望第二个构造函数检查DayType == Weekend - 而不是最后一个构造函数 - 所以只有第二个构造函数应该改变.

编辑:如果 Choose must 对于 Weekend 或 Holiday 为 false 那么我会在最后一个构造函数中强制执行但选择 第二个构造函数中的值:

public CalendarData_Day(DateTime datum, DayType typDne)
: this(datum, typDne,
typeDne != DayType.Weekend && typeDne != DayType.Holiday)
{
}

public CalendarData_Day(DateTime datum, DayType typDne, bool vybran)
{
if (vybran && (typeDne == DayType.Weekend || typeDne == DayType.Holiday))
{
throw new ArgumentException(
"vybran cannot be true for holiday or weekend dates", "vybran");
}
this.Date = datum;
this.TypeOfDay = typDne;
this.Choose = vybran;
}

关于C# 构造函数 - 设置第二个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7039149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com