代码
private void DateChanged(CalendarView sender, CalendarViewSelectedDatesChangedEventArgs args)
{
var myDate = args.AddedDates.First();
string parsedDate = myDate.ToString();
}
随机导致此异常
System.InvalidOperationException: 'Sequence contains no elements'
我该如何避免呢?
答案 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();
}