gpt4 book ai didi

c# - C# 中的接口(interface)和构造函数

转载 作者:行者123 更新时间:2023-12-02 11:10:59 28 4
gpt4 key购买 nike

好的,我确信以前出现过这样的事情,但我在上面找不到任何东西。看起来很简单,我相信答案是显而易见的。这是我的问题

我有一个名为 ICommand 的接口(interface):

public interface ICommand
{
void Do();
void Undo();
}

好的,现在我的类使用了该接口(interface):
class SquareCommand : ICommand
{
public SquareCommand(Bitmap abitmap, Color aColor, int x, int y)
{

}

public void Do()
{
}
public void Undo()
{
}
}

}

我得到的错误是“成员名称不能与其封闭类相同”,但 SquareCommand(...) 是构造函数而不是成员。我一直在寻找明显的,例如将 void 放在前面(构造函数不返回任何内容),但是当我认为应该编译时,我似乎仍然无法编译它。

最佳答案

正如其他人在评论中所说,上面的代码是可以的,所以你可能粘贴了错误的代码部分:)

为了加快速度, 最常见的问题之一|承包商导致此类错误的原因是您不小心将构造函数输入为 。方法 , IE。:

public class Foo
{
public Foo(int x) { .... }
public void Foo(int x, int y) { .... }
}

请注意,第二个“构造函数”指定了返回类型:void。它对构造函数无效,因此编译器将其作为普通方法进行威胁,然后是 姓名 该方法与 typename/constructorname 冲突,因此会引发此类错误。

请务必仔细检查所有构造函数。如果任何指定了返回类型,请将其删除。

另一件事是当您在类之间复制/粘贴代码时,或者当您重命名一个类并且没有注意到有这样一个名称的方法时,即:
public class Foo
{
public void Bar(int x) { ... }
}

如果你强制将“Foo”重命名为“Bar”,那么你会得到错误,因为生成的代码
public class Bar
{
public void Bar(int x) { ... }
}

由于与上述相同的问题而完全无效。您必须决定:无论是类 XOR,方法都可以具有这样的名称。重命名类,或将方法重命名为其他名称。

关于c# - C# 中的接口(interface)和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18930855/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com