This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can trysigning in orchanging directories.
Access to this page requires authorization. You can trychanging directories.
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Returns the fully qualified type name of this instance.
public: override System::String ^ ToString();public override string ToString();public override string? ToString();override this.ToString : unit -> stringPublic Overrides Function ToString () As StringThe fully qualified type name.
TheValueType.ToString method overrides theObject.ToString method and provides the default implementation of theToString method for value types. (Value types are types defined by thestruct keyword in C#, and by theStructure...End Structure construct in Visual Basic.) Functionally, however, the implementation is that same as that ofObject.ToString: the method returns the fully qualified type name.
Value types defined by thestruct keyword in C# and theStructure...End Structure construct in Visual Basic typically override theValueType.ToString method to provide a more meaningful string representation of the value type. The following example illustrates the difference. It defines two value types,EmployeeA andEmployeeB, creates an instance of each, and calls itsToString method. Because theEmployeeA structure does not override theValueType.ToString method, it displays only the fully qualified type name. TheEmployeeB.ToString method, on the other hand, provides meaningful information about the object.
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// Robertnamespace Corporate.EmployeeObjects[<Struct>]type EmployeeA = val mutable Name : string[<Struct>]type EmployeeB = val mutable Name : string override this.ToString() = this.Namemodule Example = let empA = EmployeeA(Name="Robert") printfn $"{empA}" let empB = EmployeeB(Name="Robert") printfn $"{empB}"// The example displays the following output:// Corporate.EmployeeObjects.EmployeeA// RobertImports Corporate.EmployeeObjectsModule 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 SubEnd ModuleNamespace 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' RobertNote that, although enumeration types are also value types, they derive from theEnum class, which overridesValueType.ToString.
When you call theToString method on a Windows Runtime structure, it provides the default behavior for value types that don't overrideToString. This is part of the support that .NET provides for the Windows Runtime (see.NET Support for Windows Store Apps and Windows Runtime). Windows Runtime structures can't overrideToString, even if they're written with C# or Visual Basic, because they can't have methods. (In addition, structures in the Windows Runtime itself don't inheritValueType.) However, they appear to haveToString,Equals, andGetHashCode methods when you use them in your C# or Visual Basic code, and .NET provides the default behavior for these methods.
Was this page helpful?
Need help with this topic?
Want to try using Ask Learn to clarify or guide you through this topic?
Was this page helpful?
Want to try using Ask Learn to clarify or guide you through this topic?