如何在方法参数中使用同名的类型解决错误?

时间:2013-09-25 00:39:05

标签: c#

我使用类似命名(但不相同)的参数类型创建了两个重载方法,它们的声明如下所示:

public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, System.Drawing.Point p)
public static RectangleNineSides GetRectangleSide(Microsoft.Xna.Framework.Rectangle rect, Microsoft.Xna.Framework.Point p)

正如您所看到的,两种方法中的参数都不同,但在调用其中一种时,参数如下:

h.RectangleNineSides side = h.GetRectangleSide(new Microsoft.Xna.Framework.Rectangle(), new Microsoft.Xna.Framework.Point());

在我的XNA项目中,我收到一条错误消息:

  

“System.Drawing.Point”类型在未引用的程序集中定义。您必须添加对程序集'System.Drawing,Version = 4.0.0.0,blah-blah'

的引用

但是,如果在当前项目的任何地方都没有调用其他方法,为什么编译器会关心其他方法呢?

类似的错误出现在任何WinForms项目中,但对于XNA的类型。我甚至明确地写了我正在谈论的RectanglePoint,我仍然得到这个错误。我究竟做错了什么?如果没有出现这种错误,是否有可能重载方法?我应该改变他们的名字吗?

1 个答案:

答案 0 :(得分:1)

编译器关心,因为它编译可能会或可能不会被调用的代码;然而,它仍然需要编译代码并能够解决定义类型的位置。

我建议不要在你的帮助类中放入不同的技术绘图方法,但是如果你,那么我肯定会用不同的方式命名它们,如下所示:

public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, 
                                                  System.Drawing.Point p)
public static RectangleNineSides GetXnaRectangleSide(Microsoft.Xna.Framework.Rectangle rect, 
                                                  Microsoft.Xna.Framework.Point p)