【发布时间】:2011-07-06 20:17:21
【问题描述】:
现在我早就知道并习惯了 C# 中的这种行为,总的来说,我喜欢它。但有时编译器就是不够聪明。
我有一小段代码,目前我的解决方法不是什么大问题,但可能在类似情况下。
bool gap=false;
DateTime start; // = new DateTime();
for (int i = 0; i < totaldays; i++)
{
if (gap)
{
if (list[i])
{
var whgap = new WorkHistoryGap();
whgap.From = start; //unassigned variable error
whgap.To = dtFrom.AddDays(i);
return whgap;
}
}
else
{
gap = true;
start = dtFrom.AddDays(i);
}
}
我看到的问题是,如果您必须使用没有默认构造函数的不可空结构来执行此操作,该怎么办?如果start 不是一个简单的 DateTime 对象,是否有办法解决这个问题?
【问题讨论】:
-
请注意,代码中实际上存在错误,但这并没有改变问题。 (gap 不应该仅仅通过将 gap 设置为 false 来设置为 true)
-
您上面的日期时间不是“可空的”,那是日期时间吗? / System.Nullable。您正在做的是利用这样一个事实,您可以在使用值初始化变量之前声明一个变量,只要它在使用前被初始化。
-
你为什么还有
bool gap?只需将i初始化为1并将start初始化为dtFrom.AddDays(1)并摆脱它... -
无参数(“默认”)构造函数将始终存在于值类型(结构)中。
-
@minitech:伟大的思想都一样:D
标签: c# .net struct compiler-errors