C#编程遇到的问题:System.NullReferenceException及其反思
2015-03-04 23:44
309 查看
最近在写一个Kinect的体感游戏,遇到了System.NullReferenceException这个问题。虽然只用了半个小时就解决了,但是自己有很多反思。
System.NullReferenceException的错误就是在if(two[0] != null) 这句代码出现的。修改为如下:
这个问题带给我的收获是C#在这个地方的设计非常的棒,因为我之前的写法是非常不负责任的。在内存中new出了新的数组,并且对数组中的每个对象都new了,然而我给这个数组赋值为一个函数的返回值。这导致我new出的内存泄露了,没有指针指向他们。
在这个小游戏中我浪费的只是两幅骨骼的内存空间,如果我将这样的代码写在服务器上,一个访问造成一个数组的内存空间浪费,一百万个访问带来的内存空间浪费会非常的大,后果不堪设想。C#此处的报错让我养成了良好的编程习惯。
避免内存泄露,当负责任的好青年!
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#此处的报错让我养成了良好的编程习惯。
避免内存泄露,当负责任的好青年!
相关文章推荐
- 关于“System.NullReferenceException: 未将对象引用设置到对象的实例”问题原因。
- A first chance exception of type 'System.NullReferenceException' occurred发生的时候你确实是遇到了Bug
- [.NET] 当用System.Messaging.MessageQueue.Send传送数据遇到InvalidCastException、NullReferenceException
- 关于“System.NullReferenceException: 未将对象引用设置到对象的实例”问题原因。
- 未处理的“System.NullReferenceException”类型的异常。指针作为形参初始化问题
- AjaxPro使用Session出错(AjaxPro "Session"引发了"System.NullReferenceException"类型的异常)
- asp.net报错:“System.NullReferenceException: 未将对象引用设置到对象的实例”
- cookies空值情况下引起System.NullReferenceException错误解决方法
- 报错:“System.NullReferenceException: 未将对象引用设置到对象的实例”及解决方案(转)
- 周末浅说--未将对象引用设置到对象的实例(System.NullReferenceException)
- 未将对象引用设置到对象的实例 (System.NullReferenceException)
- System.NullReferenceException类型的异常
- 浅说--未将对象引用设置到对象的实例(System.NullReferenceException)
- 报错:“System.NullReferenceException: 未将对象引用设置到对象的实例”
- system.nullreferenceexception 未将对象引用设置到对象的实例。
- 類型 'System.NullReferenceException' 的未處理例外狀況發生於 system.web.dll
- System.NullReferenceException: 未将对象引用设置到对象的实例
- AjaxPro使用Session出错(AjaxPro "Session"引发了"System.NullReferenceException"类型的异常)
- 解决vb.net 2003:未处理的“System.NullReferenceException”类型的异常出现在 system.data.dll 中
- 在 System.NullReferenceException 中第一次偶然出现的“ComServer.exe”类型的异常