C# 使用C实现反向地理编码时出错#

C# 使用C实现反向地理编码时出错#,c#,windows-phone-8,bing-maps,C#,Windows Phone 8,Bing Maps,我正在尝试使用C#使用visual studio实现反向地理编码。但我无法处理异常“参数超出范围异常” 代码: ReverseGeocodeQuery reverseGeocode = new ReverseGeocodeQuery(); reverseGeocode.GeoCoordinate = new GeoCoordinate(47.608, -122.337); reverseGeocode.QueryCompleted += reverseGeocode_QueryCompleted

我正在尝试使用C#使用visual studio实现反向地理编码。但我无法处理异常“参数超出范围异常”

代码:

ReverseGeocodeQuery reverseGeocode = new ReverseGeocodeQuery();
reverseGeocode.GeoCoordinate = new GeoCoordinate(47.608, -122.337);
reverseGeocode.QueryCompleted += reverseGeocode_QueryCompleted;
reverseGeocode.QueryAsync();

private void reverseGeocode_QueryCompleted(object sender,
 QueryCompletedEventArgs<IList<MapLocation>> e)
{
   MapAddress geoAddress = e.Result[0].Information.Address;

   if (e.Error == null && e.Result.Count > 0)
   {
       MapAddress address = e.Result[0].Information.Address;
       MessageBox.Show(address.Country);
   }
}
ReverseGeocodeQuery reverseGeocode=new ReverseGeocodeQuery();
reverseGeocode.GeoCoordinate=新的地理坐标(47.608,-122.337);
reverseGeocode.QueryCompleted+=reverseGeocode_QueryCompleted;
reverseGeocode.QueryAsync();
私有void reverseGeocode_QueryCompleted(对象发送方,
QueryCompletedEventArgs(e)
{
MapAddress geoAddress=e.Result[0]。Information.Address;
如果(e.Error==null&&e.Result.Count>0)
{
MapAddress address=e.Result[0]。Information.address;
MessageBox.Show(地址.国家/地区);
}
}
显示的例外情况是: 用户代码未处理System.ArgumentOutOfRangeException Message=索引超出范围。必须为非负数且小于集合的大小


请帮助我找到正确的解决方案。

问题是您希望e.Result(数组)有值,而它可能没有值,因此当您尝试访问第一个元素(e.Result[0])时,它失败了

奇怪的是,您正在访问e.Result[0]以生成一个甚至不用的变量

按以下方式更改代码,您将不会收到错误:

private void reverseGeocode_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e)
{    
   if (e.Error == null && e.Result != null && e.Result.Count > 0)
   {
       MapAddress address = e.Result[0].Information.Address;
       MessageBox.Show(address.Country);
   }
}
private void reverseGeocode_QueryCompleted(对象发送方,QueryCompletedEventArgs e)
{    
如果(e.Error==null&&e.Result!=null&&e.Result.Count>0)
{
MapAddress address=e.Result[0]。Information.address;
MessageBox.Show(地址.国家/地区);
}
}

是,错误已解决。但是,触发reverseGeocode_QueryCompleted时不会发生任何事情。我想获取当前用户位置(即国家)。请帮助我解决这个问题。为下一个问题创建一个新问题,因为您的主要问题已修复。