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 метод для предоставления более понятного строкового представления типа значения. В следующем примере демонстрируется это различие. Он определяет два типа значений, EmployeeA и EmployeeB, создает экземпляр каждого из них и вызывает его 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.) Однако при их использовании в коде C# или Visual Basic они имеют ToStringметоды , Equalsи GetHashCode , а .NET обеспечивает поведение по умолчанию для этих методов.

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