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 обеспечивает поведение по умолчанию для этих методов.