次の方法で共有


ValueType.ToString メソッド

定義

このインスタンスの完全修飾型名を返します。

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 既定の実装を提供します。 (値型は、 によって定義される型です。structC# で、... でStructureをキーワード (keyword)します。End StructureVisual Basic のコンストラクト。)ただし、機能的には、 の実装と同じですObject.ToString。メソッドは完全修飾型名を返します。

C# のキーワード (keyword)と StructureVisual Basic の ...End Structure コンストラクトによって定義されるstruct値型は、通常、 メソッドをValueType.ToStringオーバーライドして、値型のより意味のある文字列表現を提供します。 この違いを次の例に示します。 2 つの値型 と を定義しEmployeeBEmployeeAそれぞれのインスタンスを作成し、そのメソッドをToString呼び出します。 構造体は メソッドをEmployeeAValueType.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 ではこれらのメソッドの既定の動作が提供されます。

適用対象