C# 用循环填充构造函数

C# 用循环填充构造函数,c#,for-loop,parameters,constructor,C#,For Loop,Parameters,Constructor,我处理的对象有7个参数,这7个参数都代表一周中的一天。如果这一天是星期一,那么构造函数中剩余的6天应该用null填充 我首先创建一个对象,并用null填充构造函数中的所有7个参数,但我的问题是:如何创建一个填充正确天数的循环?问题不在于获取当前日期,也不在于使用setter,但我无法真正破解如何以这种方式使用循环的代码 Week week = new Week(null, null, null, null, null, null, null); for (int i=0; i<7; i+

我处理的对象有7个参数,这7个参数都代表一周中的一天。如果这一天是星期一,那么构造函数中剩余的6天应该用null填充

我首先创建一个对象,并用null填充构造函数中的所有7个参数,但我的问题是:如何创建一个填充正确天数的循环?问题不在于获取当前日期,也不在于使用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)..
}
Week Week=新的一周(null,null,null,null,null,null,null);

对于(int i=0;i,您可以像这样将一周中的一天转换为整数,并实现您的逻辑

int day = (int)DateTime.Now.DayOfWeek;
记住一周的第一天:星期天(值为零)。您可以处理它并将其值设置为7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;

似乎是一个失败的设计。为什么要创建一个
周的实例呢?我无法想象有任何用例可以做这样的事情,因为
周对我来说是一个相当静态的事情

无论如何,要回答您关于构造函数的问题,没有办法逐个填充方法或构造函数的参数,您必须将所有参数设置为1

当然,您可以一个接一个地设置类的属性:

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);
}
Week w=新的一周();
var props=typeof(Week).GetProperties();
对于(int i=0;i<7;i++)
{
//设置属性,例如使用反射:
props[i].SetValue(w,myValue);
}

因为你的评论,我想: 您应该考虑使用可选参数,其中可以设置参数的默认值,该值可以为NULL。 伪代码:

public week(object param1 = null, object param2 = null, object param3 = null)
{
    //Do Stuff here
}
因此,您可以在调用构造函数时保留一些参数为空。但请注意,这不是一个干净的解决方案,尤其是当参数的类型完全相同时,因为这可能会导致一些问题


您将找到有关可选参数的更多信息。

您可以修改
Week
代码吗?看起来应该有更好的构造函数,可能只需要
系统。DayOfWeek
对象…枚举应该是您的最佳选择。您可以在创建时使用枚举中的值来确定每个构造函数参数
Week
instance.多么奇怪的类设计..实际上这只是我项目的一个思想示例,为了简化。我的参数由厚度对象组成,但我认为这并不相关。我只需要找出如何通过一些somrt的数量访问参数(如访问参数[7]…对于称为索引的循环,最简单的形式可以使用
系统。数组
啊,这很可能就是它。如果我键入,我是否理解正确?我可以确定它是否为null,然后将其设置为另一个值?你可以将day int与for循环中的var进行比较,以确定day i最终用for loo填充空点p、 但这也是一个很好的解决方案!