Movatterモバイル変換


[0]ホーム

URL:


Skip to main contentSkip to in-page navigation

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Download Microsoft EdgeMore info about Internet Explorer and Microsoft Edge
Table of contentsExit focus mode

Object.GetType Method

Definition

Namespace:
System
Assemblies:
mscorlib.dll, System.Runtime.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Runtime.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Object.CoreCLR.cs
Source:
Object.cs
Source:
Object.cs
Source:
Object.cs

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.

Gets theType of the current instance.

public: Type ^ GetType();
public Type GetType();
member this.GetType : unit -> Type
Public Function GetType () As Type

Returns

The exact runtime type of the current instance.

Examples

The following code example demonstrates thatGetType returns the runtime type of the current instance.

using System;public class MyBaseClass {}public class MyDerivedClass: MyBaseClass {}public class Test{   public static void Main()   {      MyBaseClass myBase = new MyBaseClass();      MyDerivedClass myDerived = new MyDerivedClass();      object o = myDerived;      MyBaseClass b = myDerived;      Console.WriteLine("mybase: Type is {0}", myBase.GetType());      Console.WriteLine("myDerived: Type is {0}", myDerived.GetType());      Console.WriteLine("object o = myDerived: Type is {0}", o.GetType());      Console.WriteLine("MyBaseClass b = myDerived: Type is {0}", b.GetType());   }}// The example displays the following output://    mybase: Type is MyBaseClass//    myDerived: Type is MyDerivedClass//    object o = myDerived: Type is MyDerivedClass//    MyBaseClass b = myDerived: Type is MyDerivedClass
type MyBaseClass() = class endtype MyDerivedClass() =     inherit MyBaseClass()let myBase = MyBaseClass()let myDerived = MyDerivedClass()let o: obj = myDerivedlet b: MyBaseClass = myDerivedprintfn $"mybase: Type is {myBase.GetType()}"printfn $"myDerived: Type is {myDerived.GetType()}"printfn $"object o = myDerived: Type is {o.GetType()}"printfn $"MyBaseClass b = myDerived: Type is {b.GetType()}"// The example displays the following output://    mybase: Type is MyBaseClass//    myDerived: Type is MyDerivedClass//    object o = myDerived: Type is MyDerivedClass//    MyBaseClass b = myDerived: Type is MyDerivedClass
' Define a base and a derived class.Public Class MyBaseClassEnd Class Public Class MyDerivedClass : Inherits MyBaseClassEnd Class Public Class Test    Public Shared Sub Main()         Dim base As New MyBaseClass()        Dim derived As New MyDerivedClass()        Dim o As Object = derived        Dim b As MyBaseClass = derived                Console.WriteLine("base.GetType returns {0}", base.GetType())        Console.WriteLine("derived.GetType returns {0}", derived.GetType())        Console.WriteLine("Dim o As Object = derived; o.GetType returns {0}", o.GetType())        Console.WriteLine("Dim b As MyBaseClass = derived; b.Type returns {0}", b.GetType())    End Sub End Class ' The example displays the following output:'    base.GetType returns MyBaseClass'    derived.GetType returns MyDerivedClass'    Dim o As Object = derived; o.GetType returns MyDerivedClass'    Dim b As MyBaseClass = derived; b.Type returns MyDerivedClass

Remarks

BecauseSystem.Object is the base class for all types in the .NET type system, theGetType method can be used to returnType objects that represent all .NET types. .NET recognizes the following five categories of types:

For two objectsx andy that have identical runtime types,Object.ReferenceEquals(x.GetType(),y.GetType()) returnstrue. The following example uses theGetType method with theReferenceEquals method to determine whether one numeric value is the same type as two other numeric values.

int n1 = 12;int n2 = 82;long n3 = 12;Console.WriteLine("n1 and n2 are the same type: {0}",                  Object.ReferenceEquals(n1.GetType(), n2.GetType()));Console.WriteLine("n1 and n3 are the same type: {0}",                  Object.ReferenceEquals(n1.GetType(), n3.GetType()));// The example displays the following output://       n1 and n2 are the same type: True//       n1 and n3 are the same type: False
open Systemlet n1 = 12let n2 = 82let n3 = 12Lprintfn $"n1 and n2 are the same type: {Object.ReferenceEquals(n1.GetType(), n2.GetType())}"printfn $"n1 and n3 are the same type: {Object.ReferenceEquals(n1.GetType(), n3.GetType())}"// The example displays the following output://       n1 and n2 are the same type: True//       n1 and n3 are the same type: False
Module Example   Public Sub Main()      Dim n1 As Integer = 12      Dim n2 As Integer = 82      Dim n3 As Long = 12            Console.WriteLine("n1 and n2 are the same type: {0}",                        Object.ReferenceEquals(n1.GetType(), n2.GetType()))      Console.WriteLine("n1 and n3 are the same type: {0}",                        Object.ReferenceEquals(n1.GetType(), n3.GetType()))   End SubEnd Module' The example displays the following output:'       n1 and n2 are the same type: True'       n1 and n3 are the same type: False

Note

To determine whether an object is a specific type, you can use your language's type comparison keyword or construct. For example, you can use theTypeOf…Is construct in Visual Basic or theis keyword in C#.

TheGetType method is inherited by all types that derive fromObject. This means that, in addition to using your own language's comparison keyword, you can use theGetType method to determine the type of a particular object, as the following example shows.

object[] values = { (int) 12, (long) 10653, (byte) 12, (sbyte) -5,                   16.3, "string" };foreach (var value in values) {   Type t = value.GetType();   if (t.Equals(typeof(byte)))      Console.WriteLine("{0} is an unsigned byte.", value);   else if (t.Equals(typeof(sbyte)))      Console.WriteLine("{0} is a signed byte.", value);   else if (t.Equals(typeof(int)))      Console.WriteLine("{0} is a 32-bit integer.", value);   else if (t.Equals(typeof(long)))      Console.WriteLine("{0} is a 64-bit integer.", value);   else if (t.Equals(typeof(double)))      Console.WriteLine("{0} is a double-precision floating point.",                        value);   else      Console.WriteLine("'{0}' is another data type.", value);}// The example displays the following output://    12 is a 32-bit integer.//    10653 is a 64-bit integer.//    12 is an unsigned byte.//    -5 is a signed byte.//    16.3 is a double-precision floating point.//    'string' is another data type.
let values: obj[] =     [| 12; 10653L; 12uy       -5y; 16.3; "string" |]for value in values do    let t = value.GetType()    if t.Equals typeof<byte> then        printfn $"{value} is an unsigned byte."    elif t.Equals typeof<sbyte> then        printfn $"{value} is a signed byte."    elif t.Equals typeof<int> then        printfn $"{value} is a 32-bit integer."    elif t.Equals typeof<int64> then        printfn $"{value} is a 64-bit integer."    elif t.Equals typeof<double> then        printfn $"{value} is a double-precision floating point."    else        printfn $"'{value}' is another data type."// The example displays the following output://    12 is a 32-bit integer.//    10653 is a 32-bit integer.//    12 is an unsigned byte.//    -5 is a signed byte.//    16.3 is a double-precision floating point.//    'string' is another data type.
Module Example   Public Sub Main()      Dim values() As Object = { 12, CLng(10653), CByte(12),                                  CSbyte(-5), 16.3, "string" }       For Each value In values         Dim t AS Type = value.GetType()         If t.Equals(GetType(Byte))            Console.WriteLine("{0} is an unsigned byte.", value)         ElseIf t.Equals(GetType(SByte))            Console.WriteLine("{0} is a signed byte.", value)         ElseIf t.Equals(GetType(Integer))               Console.WriteLine("{0} is a 32-bit integer.", value)         ElseIf t.Equals(GetType(Long))               Console.WriteLine("{0} is a 64-bit integer.", value)         ElseIf t.Equals(GetType(Double))            Console.WriteLine("{0} is a double-precision floating point.",                               value)         Else            Console.WriteLine("'{0}' is another data type.", value)         End If         Next         End SubEnd Module' The example displays the following output:'       12 is a 32-bit integer.'       10653 is a 32-bit integer.'       12 is an unsigned byte.'       -5 is a signed byte.'       16.3 is a double-precision floating point.'       'string' is another data type.

TheType object exposes the metadata associated with the class of the currentObject.

Applies to

See also

Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, seeour contributor guide.

Feedback

Was this page helpful?

YesNo

In this article

Was this page helpful?

YesNo