C# WPF NullReferenceException
我有一些WPF代码的问题。这是我以前在另一个项目中使用的代码,运行良好。我有一个类Dots.cs,它是包含我的主Window1.xaml.cs的项目的依赖项 在Dots.cs中,我具有以下功能:C# WPF NullReferenceException,c#,wpf,nullreferenceexception,C#,Wpf,Nullreferenceexception,我有一些WPF代码的问题。这是我以前在另一个项目中使用的代码,运行良好。我有一个类Dots.cs,它是包含我的主Window1.xaml.cs的项目的依赖项 在Dots.cs中,我具有以下功能: public void MakeDraggable(Canvas theCanvas) { _canvas = theCanvas; _canvas.PreviewMouseDown += DPreviewMouseLeftButtonDown;
public void MakeDraggable(Canvas theCanvas)
{
_canvas = theCanvas;
_canvas.PreviewMouseDown += DPreviewMouseLeftButtonDown;
}
我正在接收InnerException“{System.NullReferenceException:对象引用未设置为对象的实例。
在…\Dot.cs:第261行的GraphicsBook.Dot.MakeDraggable(Canvas画布)中
在…\Window1.xaml.cs:line 47}中的GraphicsBook.Window1..ctor()处
在my Window1.xaml.cs中对MakeDraggable方法的调用是:
myDots = new Dot[3];
myDots[0] = new Dot(new Point(-40, 60));
myDots[1] = new Dot(new Point(40, 60));
myDots[2] = new Dot(new Point(40, -60));
for (int i = 0; i < 3; i++)
{
myDots[i].MakeDraggable(gp);
gp.Children.Add(myDots[i]);
}
myDots[i].MakeDraggable(gp);
Window1.xaml.cs中的第47行是:
myDots = new Dot[3];
myDots[0] = new Dot(new Point(-40, 60));
myDots[1] = new Dot(new Point(40, 60));
myDots[2] = new Dot(new Point(40, -60));
for (int i = 0; i < 3; i++)
{
myDots[i].MakeDraggable(gp);
gp.Children.Add(myDots[i]);
}
myDots[i].MakeDraggable(gp);
在使用方法之前验证方法的参数是有益的。这样,你就会知道你有很好的价值观。在您的情况下,对象gp很有可能为null。您可以使用断点来发现这一点 为了使其更加健壮,可以向makeDragable添加参数检查,如下所示:
public void MakeDraggable(Canvas theCanvas)
{
if (theCanvas == null)
{
throw new ArgumentNullException("theCanvas");
}
_canvas = theCanvas;
_canvas.PreviewMouseDown += DPreviewMouseLeftButtonDown;
}
现在,如果您使用null调用makeDragable,您将得到clear参数null异常,而不是描述性较差的null ReferenceException。几乎所有的
null ReferenceException
情况都是相同的。请参阅“”以获取一些提示。谢谢,就这样!我没有在XAML中正确设置它。