首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Foreach IndexOutOfRangeException

Foreach IndexOutOfRangeException
EN

Stack Overflow用户
提问于 2013-10-29 10:22:07
回答 3查看 498关注 0票数 0

我已经从这里尝试了一些解决方案。没有成功!

这是我的代码和下面的错误消息,

代码语言:javascript
复制
SQLite.SQLiteConnection connection = new SQLite.SQLiteConnection(dbPath);

            using (var db = new SQLite.SQLiteConnection(dbPath)) 
                {

                    int i = 0;
                    var d = from x in db.Table<stations>() select x; 
                    foreach (var sd in d) 
                    {
                        pushpin[] Tanke = new pushpin[i];
                        Tanke[i].Titel = sd.name.ToString(); //IndexOutOfRangeException (see below)
                        Tanke[i].Text = sd.brand.ToString();
                        Tanke[i].longitude = sd.longitude;
                        Tanke[i].latitude = sd.latitude;

                        MapLayer.SetPosition(Tanke[i], new Location(Tanke[i].latitude, Tanke[i].longitude));
                        pinLayer.Children.Add(Tanke[i]);
                        ToolTipService.SetToolTip(Tanke[i], Tanke[i].Titel);

                        i++;
                    } 
                    db.Dispose();
                    db.Close();
                } 

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-29 10:29:15

问题在于如何创建pushpin数组。看起来您不需要这个数组,所以可以这样做:

SQLite.SQLiteConnection连接=新的SQLite.SQLiteConnection(dbPath);

代码语言:javascript
复制
using (var db = new SQLite.SQLiteConnection(dbPath)) 
    {
        var d = from x in db.Table<stations>() select x; 
        foreach (var sd in d) 
        {
            var tmp = new pushpin();
            tmp.Titel = sd.name.ToString(); //IndexOutOfRangeException (see below)
            tmp.Text = sd.brand.ToString();
            tmp.longitude = sd.longitude;
            tmp.latitude = sd.latitude;

            MapLayer.SetPosition(tmp, new Location(tmp.latitude, tmp.longitude));
            pinLayer.Children.Add(tmp);
            ToolTipService.SetToolTip(tmp, tmp.Titel);
        } 
        db.Dispose();
        db.Close();
    } 
票数 0
EN

Stack Overflow用户

发布于 2013-10-29 10:25:52

当我为零时,您正在创建一个零元素数组。

代码语言:javascript
复制
pushpin[] Tanke = new pushpin[i];
Tanke[i].Titel = sd.name.ToString();

然后使用以下方法访问第一个元素。那不管用。零元素数组中没有元素。

票数 3
EN

Stack Overflow用户

发布于 2013-10-29 10:28:43

当您在foreach中跨过条目并每次创建一个由0元素组成的数组(i=0)时,您无法保存某些内容,因为元素不存在

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19655420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档