【发布时间】:2016-11-02 19:33:28
【问题描述】:
第二个if语句中的d超出范围(错误是'Use of unassigned local variable'd'')为什么?我该如何解决这个问题?
@{string d;}
@foreach (var l in c.TimeAvailables) {
<div class="day @l.Day @c.id " data-day="@l.Day" data-bgtime="@l.BegginingTime" data-endtime="@l.EndTime">
<div class="dayDisplayed">
@if (l.BegginingTime != null)
{
{d = l.Day; }
<b class="time @l.id">From:</b> <span class="beTime" data-id="@l.id">@string.Format("{0:hh:mm tt}", new DateTime().Add(l.BegginingTime.HasValue ? l.BegginingTime.Value : new TimeSpan(0, 0, 0)))</span>
<br />
<b class="time @l.id">Until:</b><span class="enTime" data-id="@l.id">@string.Format("{0:hh:mm tt}", new DateTime().Add(l.EndTime.HasValue ? l.EndTime.Value : new TimeSpan(0, 0, 0)))</span>
}
@if (l.BegginingTime == null && d != l.Day)
{
<b class="time @l.id"></b> <span class="beTime" data-
id="@l.id">Unavailable</span>
<br />
<b class="time @l.id"></b><span class="enTime" data-id="@l.id"></span>
}
</div>
}
【问题讨论】:
-
如果
l.BegginingTime == null那么d将不会被分配,因此您无法读取它。只需将其声明为string d = null; -
试试@{string d = string.Empty;}
-
太棒了!谢谢!!
-
“使用未分配的局部变量”与超出范围无关。如果您有实际的错误消息,为什么要假装它是不同的?
-
d 仅在
l.BeginningTime不为空的情况下才被分配。因此,在确认l.BeginningTime为空之后在条件中检查它是不必要的检查。