Object クラスのメソッドは、どのようToString
にしてオブジェクトの型を検出できますか?
4 に答える
のデフォルトの実装はObject.GetTypeObject.ToString
メソッドを使用しており、その実装はCLRに依存しています。
Debug.WriteLine(this.GetType().FullName);
Microsoft のソース コードから:
// Returns a String which represents the object instance. The default
// for an object is to return the fully qualified name of the class.
//
public virtual String ToString()
{
return GetType().ToString();
}
GetType().ToString()
基本的に、タイプの「名前」を返します。これは、「完全な名前」または完全修飾名 ( System.Object
. 名前には名前空間が含まれていることに注意してください。
オブジェクトのToString()
メソッドは、実際にはオブジェクトが文字列としてどのように表現されるかを設定するためのものです。そのため、任意のクラスで実装されている場合、このクラスのインスタンスはこのメソッドのセットとして表示されます。
ドキュメントからこの例を見てください:
using System;
public class Object2
{
private object value;
public Object2(object value)
{
this.value = value;
}
public override string ToString()
{
return base.ToString() + ": " + value.ToString();
}
}
public class Example
{
public static void Main()
{
Object2 obj2 = new Object2('a');
Console.WriteLine(obj2.ToString());
}
}
// The example displays the following output:
// Object2: a
Methode がサブクラスで実装されている場合、このクラスで呼び出され、ToString() のクラス固有の実装を実行します。たとえば、GetTypeまたはtypeofによって呼び出されるクラスタイプを決定します。
クラスは、基本クラスのメソッドをオーバーライドToString()
することにより、独自の実装を提供します。それが、メソッドの特定の実装をどのように見るかです。
表示される場合があります:方法: ToString メソッドをオーバーライドする (C# プログラミング ガイド)
上記のリンクの例:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return "Person: " + Name + " " + Age;
}
}
使用するには:
Person person = new Person { Name = "John", Age = 12 };
Console.WriteLine(person);
// Output:
// Person: John 12
上記の例では、基本クラスのメソッドをPerson
オーバーライドするクラスがあります。を呼び出すと、既存の実装をオーバーライドしているため、メソッドの実装が呼び出されます。ToString
object
person.ToString()
ToString