标题:Dictionary类的数组定义问题
只看楼主
我爱贺平
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
结帖率:0
已结贴  问题点数:10 回复次数:12 
Dictionary类的数组定义问题
小弟我最近编了一段代码,但是提示我运行时错误,请问这是为什么呀,我为什么不可以这么用呢? edge是我定义的一个类,请大家多多指教,很着急呀!
         
 Dictionary<int, List<edge>> [] graph = new Dictionary<int, List<edge>>[40];
            for (j = 0; j < wavelength; j++)
             {
                for (i = 1; i < 29; i++)
                {
                    graph[j].Add(i, new List<edge>());//Object reference not set to an instance of an object
                }

            }
搜索更多相关主题的帖子: Object 
2011-04-18 15:48
wei65871533
Rank: 2
等 级:论坛游民
帖 子:12
专家分:22
注 册:2011-3-17
得分:2 
一个长度40的Dictionary集合 再在里面放 List<edge>  一个Dictionary里面可以放N个List - -你想做什么
2011-04-18 16:20
我爱贺平
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
得分:0 
回复 2楼 wei65871533
我就想构建一个网络的拓扑,因为一个点可以连接多个边,所以才这么定义的,但是不知道为什么出现错误,请指教,呵呵!
2011-04-18 16:23
我爱贺平
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
得分:0 
回复 2楼 wei65871533
补充一点,是40个网络的拓扑,呵呵
2011-04-18 16:24
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
得分:2 
看看这个合你口味不
程序代码:
    class Edge
    { }

    class Graph
    {
        public Graph(int id, List<Edge> edges)
        {
            this.ID = id;
            this.Edges = edges;
        }
        public int ID { get; set; }
        public List<Edge> Edges { get; set; }
    }

    class Graphs : CollectionBase
    {
        public Graph this[int index] { get { return (Graph)List[index]; } set { List[index] = value; } }

        public void Add(Graph value)
        {
            int index = this.IndexOf(value.ID);
            if (index != -1)
            {
                throw new Exception("");
            }
            else
            {
                List.Add(value);
            }
        }

        public int IndexOf(int id)
        {
            for (int i = 0; i < this.Count; i++)
            {
                if (this[i].ID == id)
                    return i;
            }
            return -1;
        }
    }

 
2011-04-18 17:01
我爱贺平
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
得分:0 
回复 5楼 qubo1982
谢谢啊,这个挺好的;但是我就是想知道为什么我的代码有问题呢,怎么修改这个代码呢?
2011-04-18 17:21
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:2 
用VS2010试了楼主的代码 发现如下错误
程序代码:
  class Program
    {
        static void Main(string[] args)
        {
            int wavelength = 0;
            Dictionary<int, List<edge>>[] graph = new Dictionary<int, List<edge>>[40];
            for (int j = 0; j < wavelength; j++)
            {
                for (int i = 1; i < 29; i++)
                {
                    graph[j].Add(i, new List<edge>());//Object reference not set to an instance of an object
                }

            }
        }
    }
    public class edge
    {
   
    }

i j wavelength 都未定义 其他可以编译通过

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-04-18 18:05
zhp223
Rank: 5Rank: 5
等 级:职业侠客
帖 子:99
专家分:362
注 册:2010-3-21
得分:2 
lz报的什么错呀,这一段代码没啥错呀

日有所思,夜有所梦
2011-04-18 19:41
我爱贺平
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
得分:0 
回复 7楼 wangnannan
编译可以通过,但是运行的时候就不行了,其他两个变量我在前面定义了,就是个整数不重要;这是为什么呢,呵呵?
2011-04-18 19:48
我爱贺平
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
得分:0 
回复 8楼 zhp223
我感觉也是,但是运行就出错了。
  graph[j].Add(i, new List<edge>());//Object reference not set to an instance of an object
就是这行,我有点无语了,还准备运行看结果呢。。。
2011-04-18 19:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337099-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.019577 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved