【问题标题】:Why is the variable unassigned? [duplicate]为什么变量未赋值? [复制]
【发布时间】: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 为空之后在条件中检查它是不必要的检查。

标签: c# razor


【解决方案1】:

我认为您的问题是 d 未分配:

试试

 @{string d = string.Empty;} 

或者,正如@Lucas 建议的那样,您可以分配给 null。

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 2023-03-09
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多