您的位置:首页 > Web前端

C#编程遇到的问题:System.NullReferenceException及其反思

2015-03-04 23:44 309 查看
            最近在写一个Kinect的体感游戏,遇到了System.NullReferenceException这个问题。虽然只用了半个小时就解决了,但是自己有很多反思。

            

Skeleton[] two = new Skeleton[2];
two[0] = new Skeleton();
two[1] = new Skeleton();

two = GetTwoSkeleton(e);
if(two[0] != null)
textBlock.Text = "测试第一幅骨骼"+two[0].ToString();
          

        System.NullReferenceException的错误就是在if(two[0] != null) 这句代码出现的。修改为如下:

Skeleton[]  two = GetTwoSkeleton(e);
if(two[0] != null)
<span style="font-family: Arial, Helvetica, sans-serif;">textBlock</span><span style="font-family: Arial, Helvetica, sans-serif;">.Text = "@@"+two[0].ToString();</span>
       问题顺利解决。

       这个问题带给我的收获是C#在这个地方的设计非常的棒,因为我之前的写法是非常不负责任的。在内存中new出了新的数组,并且对数组中的每个对象都new了,然而我给这个数组赋值为一个函数的返回值。这导致我new出的内存泄露了,没有指针指向他们。

        在这个小游戏中我浪费的只是两幅骨骼的内存空间,如果我将这样的代码写在服务器上,一个访问造成一个数组的内存空间浪费,一百万个访问带来的内存空间浪费会非常的大,后果不堪设想。C#此处的报错让我养成了良好的编程习惯。

       避免内存泄露,当负责任的好青年!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐