私は C++ から C# を学んでいて、壁にぶつかりました。
抽象クラス AbstractWidget、インターフェイス IDoesCoolThings、および RealWidget と呼ばれる AbstractWidget から派生したクラスがあります。
public interface IDoesCoolThings
{
void DoCool();
}
public abstract class AbstractWidget : IDoesCoolThings
{
void IDoesCoolThings.DoCool()
{
Console.Write("I did something cool.");
}
}
public class RealWidget : AbstractWidget
{
}
RealWidget オブジェクトをインスタンス化し、それに対して DoCool() を呼び出すと、コンパイラから次のエラーが表示されます。
「RealWidget」には「DoCool」の定義が含まれていません
RealWidget オブジェクトを IDoesCoolThings にキャストすると、呼び出しが機能しますが、それは不要なようで、ポリモーフィズムも失われます (RealWidget.DoCool() を定義しても、AbstractWidget.DoCool() は常に呼び出されます)。
解決策は簡単だと思いますが、さまざまなことを試しましたが、一生これを理解することはできません.