我正在处理具有7个参数的对象,这7个参数都代表一周中的一天。如果该天是星期一,则应该在构造函数中剩余的6天用空值填充。
我首先创建一个对象,然后将构造函数中的所有7个参数都填充为null,但是我的问题是:如何创建一个填充正确天数的循环?问题不是现在,也没有使用setter,但是我无法真正破解如何使用这种循环的代码。
Week week = new Week(null, null, null, null, null, null, null);
for (int i=0; i<7; i++) {
week(set first parameter, then second, then third etc)..
}
感谢您的帮助!
答案 0 :(得分:0)
您可以像这样将星期几转换为整数并实现您的逻辑。
int day = (int)DateTime.Now.DayOfWeek;
记住一周中的第一天:星期日(值为零)。您可以处理它并将其值设置为7。
int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
答案 1 :(得分:0)
似乎是一个破损的设计。为什么有人会创建Week
的实例?我无法想象有任何用例来做这样的事情,因为Week
在我看来是很静态的事情。
无论如何回答关于构造函数的问题,都无法一一填写方法或构造函数的参数,而必须将所有参数都设置为一个。
您当然可以一个接一个地设置类的属性:
Week w = new Week();
var props = typeof(Week).GetProperties();
for(int i = 0; i < 7; i++)
{
// set properties, e.g. using reflection:
props[i].SetValue(w, myValue);
}
答案 2 :(得分:0)
由于您的评论,我认为: 您应该考虑使用可选参数,可以在其中为参数设置默认值,该默认值可以为null。
伪代码:
public week(object param1 = null, object param2 = null, object param3 = null)
{
//Do Stuff here
}
因此,您可以在将一些参数保留为空的情况下调用构造函数。但是请注意,这不是一个干净的解决方案,尤其是在参数类型相同的情况下,因为这可能会引起一些麻烦。
您将找到有关可选参数here的更多信息。