IEnumerable. movenext()返回True但是IEnumerable.Current引发System.N



我正在使用Manatee构建一个c#应用程序。用于处理Trello的API。

我目前正在尝试获得搜索函数返回的第一个结果。Search.Boards元素实现IEnumerable<Board>接口。

这是我目前拥有的:

Search mySearch = new Search(SearchFor.IsOpen(), 100, SearchModelType.Boards);
foreach (Board b in mySearch.Boards) {
      Console.WriteLine("Board Name:{0} _ ID:{1}", b.Name, b.Id);
}
mySearch.Boards.GetEnumerator().Reset();
bool next=mySearch.Boards.GetEnumerator().MoveNext();
Console.WriteLine("MoveNext:{0}", next);
Console.WriteLine("nBoard Name:{0}", mySearch.Boards.GetEnumerator().Current.ToString());

第一个foreach循环工作良好,并显示我的用户可以访问的所有板。Console.WriteLine("MoveNext:{0}", next)也能显示MoveNext:True。但是,最后一行返回System.NullReferenceException: Object reference not set to an instance of an object

我的代码有什么问题?我知道mysearch包含数据(我尝试在MoveNext()调用之后复制foreach循环,它工作得很好)。是否有更简单的方法来访问搜索结果中的特定元素?

GetEnumerator()每次调用返回一个新的枚举数。无论你认为你在做什么,你都没有这样做。结果在每行之后丢失,因为您没有保留枚举数变量。

一般来说,c#是一种高级语言。尽量不要下到手动循环处理的深度。你的foreach很好。

在foreach循环之外访问枚举成员,LinQ是最简单的方法:

var board = mySearch.Boards.FirstOrDefault(board => board.Name == "WhatImLookingFor");

相关内容

  • 没有找到相关文章

最新更新