随机" InvalidOperationException"在CalendarView [UWP]中更改日期时

时间:2017-08-08 16:23:58

标签: c# exception uwp invalidoperationexception calendarview

代码

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

随机导致此异常

System.InvalidOperationException: 'Sequence contains no elements'

我该如何避免呢?

4 个答案:

答案 0 :(得分:0)

这是因为你在一些不包含任何东西/空的东西上调用.First()。更好的想法是调用FirstOrDefault(),如果在空集合上调用它,则返回null而不是异常。

var myDate = args.AddedDates.FirstOrDefault();
if(myDate != null)
    MyButton.Content = myDate.ToString();

答案 1 :(得分:0)

这意味着 args.AddedDates 为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();
    }
}

答案 2 :(得分:0)

你可以在这里做几件事......

首先,您可以允许空集合..

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属性中。

答案 3 :(得分:0)

与其他答案类似,但args也可能为null,因此我会使用:

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

修改

正如已经指出的,上述仅适用于C#6.0或更高版本。可在所有版本中使用的替代方案是:

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