我遇到了一些WPF代码的问题。这是我以前在另一个项目中使用的代码,运行良好。我有一个类Dots.cs,它是一个依赖项,该项目包含我的主Window1.xaml.cs。
在Dots.cs中,我具有以下功能:
public void MakeDraggable(Canvas theCanvas)
{
_canvas = theCanvas;
_canvas.PreviewMouseDown += DPreviewMouseLeftButtonDown;
}我正在接收未设置为对象实例的InnerException '{System.NullReferenceException:对象引用。GraphicsBook.Dot.MakeDraggable(画布theCanvas) in ...\Dot.cs:line 261 at GraphicsBook.Window1..ctor() in...\Window1.xaml.cs:line 47}
在我的MakeDraggable中调用Window1.xaml.cs方法是:
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]);
}为了清楚起见,Dot.cs中的第261行是:
_canvas.PreviewMouseDown += DPreviewMouseLeftButtonDown;Window1.xaml.cs中的第47行是:
myDots[i].MakeDraggable(gp);发布于 2014-11-14 16:50:40
在使用之前验证方法的参数可能是有益的。这样,你就会知道你有很好的价值。在您的情况下,您的对象gp很有可能为空。你可以用断点找到它。
为了使它更健壮,您可以向MakeDraggable添加一个参数检查,如下所示:
public void MakeDraggable(Canvas theCanvas)
{
if (theCanvas == null)
{
throw new ArgumentNullException("theCanvas");
}
_canvas = theCanvas;
_canvas.PreviewMouseDown += DPreviewMouseLeftButtonDown;
}现在,如果您使用null调用MakeDraggable,您将得到清晰的参数-- Null异常,而不是描述性较低的NullReferenceException。
https://stackoverflow.com/questions/26934883
复制相似问题