好的,我确信之前有过这样的事情,但我找不到任何东西。看似简单,我确信答案是显而易见的。这是我的问题
我有一个名为ICommand的接口:
public interface ICommand
{
void Do();
void Undo();
}
好的,现在我的班级使用了界面:
class SquareCommand : ICommand
{
public SquareCommand(Bitmap abitmap, Color aColor, int x, int y)
{
}
public void Do()
{
}
public void Undo()
{
}
}
}
我得到的错误是“成员名称不能与其封闭的类相同”,但SquareCommand(...)是构造函数而不是成员。我寻找过明显的例如把void放在前面(构造函数不会返回任何东西)但是我认为它应该仍然无法编译。
答案 0 :(得分:0)
正如其他人在评论中所说,上面的代码没问题,所以你probalby粘贴了错误的部分代码:)
为了加快速度,导致此类错误的 contructors 最常见的问题之一是当您意外地将构造函数错误地键入方法时,即:< / p>
public class Foo
{
public Foo(int x) { .... }
public void Foo(int x, int y) { .... }
}
请注意,第二个“构造函数”具有指定的返回类型:void。它对于构造函数是无效的,因此编译器将其威胁为普通方法,然后该方法的 name 与typename / constructorname冲突,因此会引发此类错误。
请务必仔细检查所有构造函数。如果有任何指定了返回类型,请将其删除。
其他的是当你在类之间复制/粘贴代码,或者当你重命名一个类并且没有注意到有这样一个名字的方法时,即:
public class Foo
{
public void Bar(int x) { ... }
}
如果您强制将“Foo”重命名为“Bar”,那么您将从生成的代码中获得错误
public class Bar
{
public void Bar(int x) { ... }
}
由于与上述相同的问题,完全无效。你必须决定:要么类XOR,方法可以有这样的名字。重命名该类,或将该方法重命名为其他名称。