| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 878 人关注过本帖
标题:简单的赋值为什么不能进行(菜鸟级别)
只看楼主 加入收藏
adbest
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-5-30
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:5 
简单的赋值为什么不能进行(菜鸟级别)
简单的说一下,一个class含两个enum,然后新建一个2维class数组,给数组付值时nullReferenceException错误。

找到错误原因了。

错误原因:
C#中,如果数组中的元素是引用类型,则需要为每个元素分配内存空间。也就是说,new一次数组之外,还需要new每个元素。
 

public enum Show
        {
            Bomb = -3,
            Blank = -2,
            FLAG = -1,
            Zero = 0,
            One = 1,
            Two,
            Three,
            Four,
            Five,
            Six,
            Seven,
            Eight,
 
        }
        public enum IsMine
        {
            Mine,
            NotMine
        }

 public class gridstatus
        {
            public Show show{get;set;}
            public IsMine ismine{get;set;}
 
        }
 
        public gridstatus[,] grid = new gridstatus[9, 9];

 public void newGame()
        {
            //grid[0, 0].show = Show.Blank;
 
            foreach (var a in grid)
            {
                a.show = Show.Blank;//这里出现nullReferenceException错误
                //a.show = (Show)1;
                ///TODO
                Random ra = new Random();
                int t = ra.Next(10);
                if (t < 2)
                {
                    a.ismine = IsMine.Mine;
                }
                else
                {
                    a.ismine = IsMine.NotMine;
                }
 
            }


[ 本帖最后由 adbest 于 2013-8-2 15:14 编辑 ]
搜索更多相关主题的帖子: public 空间 新建 元素 
2013-08-02 10:53
暂未命名
Rank: 2
等 级:论坛游民
帖 子:20
专家分:23
注 册:2013-6-1
收藏
得分:4 
要把public gridstatus[,] grid = new gridstatus[9, 9];和public void newGame()丢进类里吧
还有程序没有Main函数,无法运行
2013-08-02 12:11
adbest
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-5-30
收藏
得分:0 
这个只是一个程序的一部分。我简化了下代码,帮忙看看,先谢谢了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
             number[] t= new number[9];
             foreach (var k in t)
             {
                 k.a = 1;//这里出现nullReferenceException错误
                 k.b = 1;
             }
             Console.WriteLine(t[5].a);
        }
        public  class number
            {
                public int a{get;set;}
                public int b{get;set;}
            }
        
        
    }
}
2013-08-02 12:48
XH浩
Rank: 2
等 级:等待验证会员
帖 子:8
专家分:13
注 册:2013-3-28
收藏
得分:4 
你逗不逗?foreach迭代语句,不能对foreach要迭代的对象进行修改操作,你会不知道?要修改就用for语句!!!
2013-08-02 13:55
lantian8134
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:8
帖 子:115
专家分:789
注 册:2013-1-11
收藏
得分:4 
t数组中的number需要实例化
2013-08-02 15:31
wchl868
Rank: 2
来 自:山东济宁
等 级:论坛游民
帖 子:23
专家分:28
注 册:2013-4-26
收藏
得分:0 
回复 5楼 lantian8134
我有问题不明白了   你给我说说。这是我的QQ545321579   我的那个QQ没有了

前辈们。小孩子报道,多多指教
2013-09-10 12:44
快速回复:简单的赋值为什么不能进行(菜鸟级别)
数据加载中...
 
   



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

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