C# 如何解决方法参数中同名类型的错误?
我创建了两个重载方法,其参数类型具有相似的名称(但不相同),它们的声明如下所示:C# 如何解决方法参数中同名类型的错误?,c#,C#,我创建了两个重载方法,其参数类型具有相似的名称(但不相同),它们的声明如下所示: public static RectangleNineSides GetRectangleSide(System.Drawing.Rectangle rect, System.Drawing.Point p) public static RectangleNineSides GetRectangleSide(Microsoft.Xna.Framework.Rectangle rect, Microsoft.Xna.
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)
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)
正如您所看到的,两种方法中的参数都不同,但是当这样调用其中一种方法时:
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,诸如此类”的引用
但是,如果在当前项目的任何地方都没有调用另一个方法,为什么编译器会关心它呢
除XNA的类型外,任何WinForms项目中都会出现类似错误。我甚至明确地写下了我所说的
矩形
和点
,我仍然得到这个错误。我做错了什么?如果没有这种错误,重载方法是不可能的吗?我应该改变他们的名字吗?编译器很关心,因为它编译的代码可能会被调用,也可能不会被调用;尽管如此,它仍然需要编译代码并能够解析定义类型的位置
我建议不要将不同的技术绘图方法放在助手类中,但是如果您选择,那么我肯定会以不同的方式命名它们,如下所示:
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)
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)
编译器会在意,因为它编译的代码可能会被调用,也可能不会被调用;尽管如此,它仍然需要编译代码并能够解析定义类型的位置 我建议不要将不同的技术绘图方法放在助手类中,但是如果您选择,那么我肯定会以不同的方式命名它们,如下所示:
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)
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)
只是因为没有调用该方法。。并不意味着它不在最终装配中。总装需要元数据。。因此,在不可能的情况下,另一个程序集通过反射调用它。。它知道被调用方中的每种类型(以及其他内容),所以我不应该在我的helper类中混合使用它们,因为该方法没有被调用。。并不意味着它不在最终装配中。总装需要元数据。。因此,在不可能的情况下,另一个程序集通过反射调用它。。它知道被调用方中的每种类型(除其他外)。因此,我不应该在助手类中混合使用它们?好吧,那么为了清晰起见,我将更改它们的两个名称。好吧,为了清晰起见,我将更改它们的两个名称。