标题:简单的赋值为什么不能进行(菜鸟级别)
取消只看楼主
adbest
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-5-30
结帖率:50%
已结贴  问题点数:10 回复次数:1 
简单的赋值为什么不能进行(菜鸟级别)
简单的说一下,一个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
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



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




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

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