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

            最近在写一个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)
                 textBlock.Text = "@@"+two[0].ToString();
       问题顺利解决。

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

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

       避免内存泄露,当负责任的好青年!

你可能感兴趣的:(C#编程遇到的问题:System.NullReferenceException及其反思)