Object.GetType Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan Type instans saat ini.
public:
Type ^ GetType();
public Type GetType();
member this.GetType : unit -> Type
Public Function GetType () As Type
Mengembalikan
Jenis runtime yang tepat dari instans saat ini.
Contoh
Contoh kode berikut menunjukkan yang GetType mengembalikan jenis runtime instans saat ini.
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
Keterangan
Karena System.Object adalah kelas dasar untuk semua jenis dalam sistem jenis .NET, metode GetType dapat digunakan untuk mengembalikan objek Type yang mewakili semua jenis .NET. .NET mengenali lima kategori jenis berikut:
- Kelas, yang berasal dari System.Object.
- Jenis nilai, yang berasal dari System.ValueType.
- Antarmuka, yang berasal dari System.Object.
- Enumerasi, yang berasal dari System.Enum.
- Delegasi, yang berasal dari System.MulticastDelegate.
Untuk dua objek x dan y yang memiliki jenis runtime yang identik, Object.ReferenceEquals(x.GetType(),y.GetType()) mengembalikan true. Contoh berikut menggunakan GetType metode dengan metode untuk menentukan apakah satu nilai numerik adalah jenis yang sama dengan ReferenceEquals dua nilai numerik lainnya.
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
Note
Untuk menentukan apakah objek adalah jenis tertentu, Anda dapat menggunakan kata kunci atau konstruksi perbandingan jenis bahasa Anda. Misalnya, Anda dapat menggunakan konstruksi TypeOf…Is di Visual Basic atau kata kunci is di C#.
Metode GetType ini diwariskan oleh semua jenis yang berasal dari Object. Ini berarti bahwa, selain menggunakan kata kunci perbandingan bahasa Anda sendiri, Anda dapat menggunakan GetType metode untuk menentukan jenis objek tertentu, seperti yang ditunjukkan contoh berikut.
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.
Objek Type mengekspos metadata yang terkait dengan kelas saat ini Object.