Object.GetType Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient le Type de l'instance actuelle.
public:
Type ^ GetType();
public Type GetType ();
member this.GetType : unit -> Type
Public Function GetType () As Type
Retours
Type exact de l'instance actuelle au moment de l'exécution.
Exemples
L’exemple de code suivant montre que GetType retourne le type d’exécution de l’instance actuelle.
using namespace System;
public ref class MyBaseClass {};
public ref class MyDerivedClass: MyBaseClass{};
int main()
{
MyBaseClass^ myBase = gcnew MyBaseClass;
MyDerivedClass^ myDerived = gcnew 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() );
}
/*
This code produces the following output.
mybase: Type is MyBaseClass
myDerived: Type is MyDerivedClass
object o = myDerived: Type is MyDerivedClass
MyBaseClass b = myDerived: Type is MyDerivedClass
*/
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 end
type MyDerivedClass() =
inherit MyBaseClass()
let myBase = MyBaseClass()
let myDerived = MyDerivedClass()
let o: obj = myDerived
let b: MyBaseClass = myDerived
printfn $"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 MyBaseClass
End Class
Public Class MyDerivedClass : Inherits MyBaseClass
End 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
Remarques
Étant donné que System.Object est la classe de base pour tous les types dans le système de type .NET, la GetType méthode peut être utilisée pour retourner Type des objets qui représentent tous les types .NET. .NET reconnaît les cinq catégories de types suivantes :
Classes, qui sont dérivées de System.Object,
Types valeur, qui sont dérivés de System.ValueType.
Interfaces dérivées de System.Object .NET Framework 2.0.
Énumérations, qui sont dérivées de System.Enum.
Délégués, qui sont dérivés de System.MulticastDelegate.
Pour deux objets x
et y
qui ont des types d’exécution identiques, Object.ReferenceEquals(x.GetType(),y.GetType())
retourne true
. L’exemple suivant utilise la GetType méthode avec la ReferenceEquals méthode pour déterminer si une valeur numérique est du même type que deux autres valeurs numériques.
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 System
let n1 = 12
let n2 = 82
let n3 = 12L
printfn $"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 Sub
End Module
' The example displays the following output:
' n1 and n2 are the same type: True
' n1 and n3 are the same type: False
Notes
Pour déterminer si un objet est un type spécifique, vous pouvez utiliser le mot clé ou la construction de comparaison de type de votre langue. Par exemple, vous pouvez utiliser la TypeOf…Is
construction en Visual Basic ou le is
mot clé en C#.
La GetType méthode est héritée par tous les types qui dérivent de Object. Cela signifie que, en plus d’utiliser le mot clé de comparaison de votre propre langue, vous pouvez utiliser la GetType méthode pour déterminer le type d’un objet particulier, comme le montre l’exemple suivant.
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 Sub
End 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.
L’objet Type expose les métadonnées associées à la classe du actuel Object.