代码之家  ›  专栏  ›  技术社区  ›  Samuele Dassatti

在CalendarView[UWP][复制]中更改日期时随机出现“InvalidOperationException”

  •  0
  • Samuele Dassatti  · 技术社区  · 7 年前

    代码

    private void DateChanged(CalendarView sender, CalendarViewSelectedDatesChangedEventArgs args)
    {
        var myDate = args.AddedDates.First();
        string parsedDate = myDate.ToString();
    }
    

    System.InvalidOperationException: 'Sequence contains no elements'
    

    4 回复  |  直到 7 年前
        1
  •  0
  •   swatsonpicken    7 年前

    args 也可以为null,因此我将使用:

    if (args?.AddedDates != null && args.AddedDates.Any())
    {
        var myDate = args.AddedDates.First();
        string parsedDate = myDate.ToString();
    }
    

    if (args != null && args.AddedDates != null && args.AddedDates.Any())
    {
        var myDate = args.AddedDates.First();
        string parsedDate = myDate.ToString();
    }
    
        2
  •  0
  •   Novastorm    7 年前

    这是因为你在打电话 .First() FirstOrDefault() 它返回 null 而不是对空集合调用它时的异常。

    var myDate = args.AddedDates.FirstOrDefault();
    if(myDate != null)
        MyButton.Content = myDate.ToString();
    
        3
  •  0
  •   Michael Coxon    7 年前

    private void DateChanged(CalendarView sender, CalendarViewSelectedDatesChangedEventArgs args)
    {
        var myDate = args.AddedDates.FirstOrDefault();
        if (myDate != null)
        {
            string parsedDate = myDate.ToString();
        }
    }
    

    第二,你可以提前查看收藏。。。

    private void DateChanged(CalendarView sender, CalendarViewSelectedDatesChangedEventArgs args)
    {
        if(args.AddedDates != null || args.AddedDates.Any())
        {
            var myDate = args.AddedDates.First();
            string parsedDate = myDate.ToString();
        }
    }
    

    AddedDates 所有物

        4
  •  0
  •   Michael Coxon    7 年前

    这意味着 为NULL或为空。

    private void DateChanged(CalendarView sender, CalendarViewSelectedDatesChangedEventArgs args)
    {
        if (args.AddedDates != null && args.AddedDates.Count > 0)
        {
            var myDate = args.AddedDates.First();
            string parsedDate = myDate.ToString();
        }
    }