用循环填充构造函数

时间:2018-08-06 08:07:21

标签: c# for-loop parameters constructor

我正在处理具有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)..
}

感谢您的帮助!

3 个答案:

答案 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的更多信息。