C# 用循环填充构造函数
我处理的对象有7个参数,这7个参数都代表一周中的一天。如果这一天是星期一,那么构造函数中剩余的6天应该用null填充 我首先创建一个对象,并用null填充构造函数中的所有7个参数,但我的问题是:如何创建一个填充正确天数的循环?问题不在于获取当前日期,也不在于使用setter,但我无法真正破解如何以这种方式使用循环的代码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+
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、 但这也是一个很好的解决方案!