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 。 (Value 类型是由 C# 中的 关键字 (keyword) 和 StructureVisual Basic.) 函数中的 ...End Structure 构造定义的struct类型,但是,实现与 Object.ToString的实现相同:该方法返回完全限定的类型名称。

struct C# 中的 关键字 (keyword) 和 StructureVisual Basic 中的 ...End Structure 构造定义的值类型通常会重写 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 运行时说明

在 Windows 运行时 结构上调用 ToString 方法时,它为不重写 ToString的值类型提供默认行为。 这是 .NET 为 Windows 运行时 (请参阅 .NET 对 Windows 应用商店应用的 .NET 支持和Windows 运行时) 提供的支持的一部分。 Windows 运行时结构无法替代 ToString,即使这些结构是使用 C# 或 Visual Basic 编写的,因为它们不能有方法。 (此外,Windows 运行时中的结构本身不会继承 ValueType.) 但是,在 C# 或 Visual Basic 代码中使用时,它们似乎具有 ToStringEqualsGetHashCode 方法,并且 .NET 提供这些方法的默认行为。

适用于