は、以下の例をご覧ください:なぜToString()メソッドはC#に継承されずにオーバーライドできますか?
using System;
class MyClass
{
static int count = 0;
int id;
public MyClass()
{
id = count;
count++;
}
public override string ToString()
{
return "MyClass object #" + id;
}
}
class Test
{
static void Main()
{
MyClass ob1 = new MyClass();
MyClass ob2 = new MyClass();
MyClass ob3 = new MyClass();
Console.WriteLine(ob1);
Console.WriteLine(ob2);
Console.WriteLine(ob3);
}
}
プログラムからの出力はここに示されています:
MyClassのは、#0
MyClassのオブジェクト#1
MyClassのは、あなたのよう#2
オブジェクトオブジェクトここで見ることができるメソッドToString()は、 'MyClass'という名前のクラスではオーバーライドされていますが、 'MyClass'はクラスから派生したものではないため、継承はまったくありません。継承がない場合、どのように 'オーバーライド'を使うことができますか?
私たちは、あなたが以下のコードのように「)(HelloString」を言う他のメソッド名にtoString()を変更した場合は、スニペット:
public class Program
{
public static void Main(string[] args)
{
MyClass ob1 = new MyClass();
MyClass ob2 = new MyClass();
MyClass ob3 = new MyClass();
Console.WriteLine(ob1);
Console.WriteLine(ob2);
Console.WriteLine(ob3);
}
}
class MyClass
{
static int count = 0;
int id;
public MyClass()
{
id = count;
count++;
}
public override string HelloString()
{
return "MyClass object #" + id;
}
}
コンパイラはエラーをスローします。
「は、適切な方法を上書きすることがわかっていません」'ToString()'メソッドでこの特殊な動作がなぜ発生するのですか?
[オブジェクト](https://msdn.microsoft.com/en-us/library/system.object(v = vs.110).aspx)から継承しています。 – LarsTech