ValueType.ToString メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このインスタンスの完全修飾型名を返します。
public:
override System::String ^ ToString();
public override string ToString ();
public override string? ToString ();
override this.ToString : unit -> string
Public Overrides Function ToString () As String
戻り値
完全修飾型名。
注釈
メソッドは ValueType.ToString メソッドを Object.ToString オーバーライドし、値型の メソッドの ToString
既定の実装を提供します。 (値型は、 によって定義される型です。struct
C# で、... でStructure
をキーワード (keyword)します。End Structure
Visual Basic のコンストラクト。)ただし、機能的には、 の実装と同じですObject.ToString。メソッドは完全修飾型名を返します。
C# のキーワード (keyword)と Structure
Visual Basic の ...End Structure
コンストラクトによって定義されるstruct
値型は、通常、 メソッドをValueType.ToStringオーバーライドして、値型のより意味のある文字列表現を提供します。 この違いを次の例に示します。 2 つの値型 と を定義しEmployeeB
、EmployeeA
それぞれのインスタンスを作成し、そのメソッドを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しない値型の既定の動作が提供されます。 これは、.NET がWindows ランタイムに対して提供するサポートの一部です (「.NET での Windows ストア アプリとWindows ランタイムのサポート」を参照してください)。 Windows ランタイム構造体は、C# または Visual Basic で記述されている場合でも、メソッドを持つことができないため、 をオーバーライドToStringすることはできません。 (さらに、Windows ランタイム自体の構造体は 継承ValueTypeされません)。ただし、C# または Visual Basic コードで使用すると、メソッドは 、Equals、および GetHashCode のように見ToStringえ、.NET ではこれらのメソッドの既定の動作が提供されます。
適用対象
.NET