ValueType.ToString 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回此实例的完全限定类型名称。
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) 和 Structure
Visual Basic.) 函数中的 ...End Structure
构造定义的struct
类型,但是,实现与 Object.ToString的实现相同:该方法返回完全限定的类型名称。
由 struct
C# 中的 关键字 (keyword) 和 Structure
Visual Basic 中的 ...End Structure
构造定义的值类型通常会重写 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 运行时说明
在 Windows 运行时 结构上调用 ToString 方法时,它为不重写 ToString的值类型提供默认行为。 这是 .NET 为 Windows 运行时 (请参阅 .NET 对 Windows 应用商店应用的 .NET 支持和Windows 运行时) 提供的支持的一部分。 Windows 运行时结构无法替代 ToString,即使这些结构是使用 C# 或 Visual Basic 编写的,因为它们不能有方法。 (此外,Windows 运行时中的结构本身不会继承 ValueType.) 但是,在 C# 或 Visual Basic 代码中使用时,它们似乎具有 ToString、 Equals和 GetHashCode 方法,并且 .NET 提供这些方法的默认行为。