秒表抛出null异常

时间:2015-04-21 00:16:27

标签: c# winforms nullreferenceexception stopwatch

我目前正在尝试使用c#WinForms中的kinect传感器创建战舰游戏。我已经掌握了所有的基础知识,并且一直在尝试在我的项目中实现一个类,它将骨架帧数据转换成我可以用来控制鼠标的东西。我一直在关注我在网上找到的一些示例代码,但是遇到了Stopwatches的一个大问题。使用我的代码,我正在调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Coding4Fun.Kinect.Wpf;
using Microsoft.Kinect;
using System.Windows.Forms;
using System.Diagnostics;
using System.Drawing;
using System.Windows;

namespace TCP_Server
{
   class motionClass
   {
      //other objects are declared in here as well.
      private readonly Stopwatch _clickHoldingTimer;

并在我的错误输出窗口中,我得到以下内容:

  

字段' TCP_Server.motionClass._clickHoldingTimer'从未分配给,并且将始终具有其默认值null

秒表的目的是确定用户进行抓取动作的时间长度,如果按住了一段时间,则会执行鼠标点击。

如果我将程序运行到我的motionClass被初始化的位置,只要它看到正在被跟踪的帧中的骨架并且遇到秒表的第一次调用,我就会抛出一个nullValueException。

为什么秒表会抛出这个异常,有没有办法解决它?我可以提供更多代码并显示在需要时抛出异常的位置。

2 个答案:

答案 0 :(得分:2)

我曾尝试将代码更改为

private readonly Stopwatch _clickHoldingTimer = new Stopwatch();

但它仍然把错误扔给了我。我刚刚尝试的是关闭并重新启动Visual Studio,使用此代码而不是我原来的代码,并自行修复。

答案 1 :(得分:0)

您的变量显然是声明但从未“new'd”,声明变量只是定义它的类型,但变量不是object,直到它被实例化。如果您显示的代码是您使用此变量的唯一位置,则删除声明,因为它不需要/使用。

为了使用你的秒表对象,你需要让这一行执行(或类似的东西):

_clickHoldingTimer = new StopWatch();