ValueType.ToString メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このインスタンスの完全修飾型名を返します。
public:
override System::String ^ ToString();
public override string ToString();
override this.ToString : unit -> string
Public Overrides Function ToString () As String
返品
完全修飾型名。
注釈
ValueType.ToString メソッドは、Object.ToString メソッドをオーバーライドし、値型のToString メソッドの既定の実装を提供します。 (値型は、C# の struct キーワード、および Structure... によって定義される型です。End Structure construct in Visual Basic)。ただし、機能的には、実装は Object.ToString の実装と同じです。メソッドは完全修飾型名を返します。
C# の struct キーワードと Structure...Visual Basicの End Structure コンストラクトは、通常、ValueType.ToString メソッドをオーバーライドして、値型のより意味のある文字列表現を提供します。 次の例は、その違いを示しています。
EmployeeAとEmployeeBの 2 つの値型を定義し、それぞれのインスタンスを作成し、そのToStringメソッドを呼び出します。
EmployeeA構造体はValueType.ToString メソッドをオーバーライドしないため、完全修飾型名のみが表示されます。 一方、 EmployeeB.ToString メソッドは、オブジェクトに関する意味のある情報を提供します。
using System;
using Corporate.EmployeeObjects;
public class Example
{
public static void Main()
{
var empA = new EmployeeA{ Name = "Robert",};
Console.WriteLine(empA.ToString());
var empB = new EmployeeB{ Name = "Robert",};
Console.WriteLine(empB.ToString());
}
}
namespace Corporate.EmployeeObjects
{
public struct EmployeeA
{
public String Name { get; set; }
}
public struct EmployeeB
{
public String Name { get; set; }
public override String ToString()
{
return Name;
}
}
}
// The example displays the following output:
// Corporate.EmployeeObjects.EmployeeA
// Robert
namespace Corporate.EmployeeObjects
[<Struct>]
type EmployeeA =
val mutable Name : string
[<Struct>]
type EmployeeB =
val mutable Name : string
override this.ToString() =
this.Name
module Example =
let empA = EmployeeA(Name="Robert")
printfn $"{empA}"
let empB = EmployeeB(Name="Robert")
printfn $"{empB}"
// The example displays the following output:
// Corporate.EmployeeObjects.EmployeeA
// Robert
Imports Corporate.EmployeeObjects
Module Example
Public Sub Main()
Dim empA As New EmployeeA With { .Name = "Robert" }
Console.WriteLine(empA.ToString())
Dim empB = new EmployeeB With { .Name = "Robert" }
Console.WriteLine(empB.ToString())
End Sub
End Module
Namespace Corporate.EmployeeObjects
Public Structure EmployeeA
Public Property Name As String
End Structure
Public Structure EmployeeB
Public Property Name As String
Public Overrides Function ToString() As String
Return Name
End Function
End Structure
End Namespace
' The example displays the following output:
' Corporate.EmployeeObjects.EmployeeA
' Robert
列挙型も値型ですが、ValueType.ToStringをオーバーライドするEnum クラスから派生することに注意してください。
Windows ランタイムに関する注意事項
Windows ランタイム構造体で ToString メソッドを呼び出すと、ToString をオーバーライドしない値型の既定の動作が提供されます。 これは、Windows ランタイムに対して .NET が提供するサポートの一部です (Windows ストア アプリと Windows ランタイムの .NET サポートを参照)。 Windows ランタイム構造体は、C# または Visual Basic で記述されている場合でも、メソッドを持つことができないため、ToString をオーバーライドできません。 (さらに、Windows ランタイム自体の構造体は、ValueType を継承しません)。ただし、C# または Visual Basic コードで使用すると、ToString、Equals、GetHashCode メソッドが含まれるように見え、.NETはこれらのメソッドの既定の動作を提供します。