2

基本クラスで記述されているメソッドと同じ名前の派生クラスでメソッドを定義すると、「'override'または'new'キーワードを追加してください」というエラーが発生するはずです。しかし、私が以下のコードでそうさせようとしているにもかかわらず、すべてが問題ないようです。

理由を知りたいのですが?VisualStudio2010を使用しています。

class Base
{
  public void Method()
  {
    Console.WriteLine("Base class");
  }
}

class Child : Base
{
  public void Method()
  {
    Console.WriteLine("Child class");
  }
}

static void Main(string[] args)
{
  Base myBase = new Base();
  Child myChild = new Child();
  myBase.Method();
  myChild.Method();
}

私が得ている出力は次のとおりです。

基本クラス

子クラス

4

3 に答える 3

1

これはエラーではなく、警告です。

CS0108を参照してください:http://msdn.microsoft.com/en-us/library/3s8070fc.aspx

エラーとして扱いたい場合は、プロジェクトのプロパティに移動し、[ビルド]タブに移動し、警告をエラーとして扱い、108をボックスに入力しながら特定の警告を確認できます。

于 2012-09-15T21:08:32.477 に答える
1

それらは、たまたま同じ名前を持つ2つの異なるメソッドです。コンパイル時にバインドされるメソッドは、コンパイラが特定のコンテキストで認識するタイプによって異なります。

これがコンパイル時または実行時のエラーである場合、ライブラリ開発者は、共有基本クラスに新しいメソッドを追加するだけで、消費するコードを壊す可能性があることに注意してください。

于 2012-09-15T21:02:27.827 に答える
1

エラーは発生せず、コンパイル時の警告が表示されます。

これがすべてを説明するMSDNドキュメントです。

于 2012-09-15T21:02:34.730 に答える