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 . (Типы значений определяются ключевым словом struct в C#, а также Structure... End Structure конструкции в Visual Basic.) Однако реализация аналогична реализации Object.ToString: метод возвращает полное имя типа.

Типы значений, определенные ключевым словом struct в C# и Structure... End Structure конструкция в Visual Basic обычно переопределяет метод ValueType.ToString, чтобы обеспечить более понятное строковое представление типа значения. В следующем примере демонстрируется это различие. Он определяет два типа значений и EmployeeAEmployeeBсоздает экземпляр каждого из них и вызывает его 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

Обратите внимание, что, хотя типы перечисления также являются типами значений Enum , они являются производными от класса, который переопределяет ValueType.ToString.

Заметки о среде выполнения Windows

При вызове метода ToString в структуре среда выполнения Windows он предоставляет поведение по умолчанию для типов значений, которые не переопределяют ToString. Это часть поддержки, которую предоставляет .NET для среды выполнения Windows (см. поддержку .NET для приложений Магазина Windows и среды выполнения Windows). среда выполнения Windows структуры не могут переопределить ToString, даже если они написаны с помощью C# или Visual Basic, так как они не могут иметь методы. (Кроме того, структуры в самой среда выполнения Windows не наследуют ValueType.) Однако они, как представляется, имеют методы ToString, Equals и GetHashCode при их использовании в коде C# или Visual Basic, а .NET обеспечивает поведение по умолчанию для этих методов.

Применяется к