Type.BaseType Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar den typ som den aktuella ärver Type direkt från.
public:
abstract property Type ^ BaseType { Type ^ get(); };
public abstract Type? BaseType { get; }
public abstract Type BaseType { get; }
member this.BaseType : Type
Public MustOverride ReadOnly Property BaseType As Type
Egenskapsvärde
Från Type vilken den aktuella ärver Type direkt, eller null om den aktuella Type representerar Object klassen eller ett gränssnitt.
Implementeringar
Exempel
I följande exempel visas hur du använder egenskapen BaseType .
using System;
class TestType
{
public static void Main()
{
Type t = typeof(int);
Console.WriteLine("{0} inherits from {1}.", t,t.BaseType);
}
}
let t = typeof<int>
printfn $"{t} inherits from {t.BaseType}."
Class TestType
Public Shared Sub Main()
Dim t As Type = GetType(Integer)
Console.WriteLine("{0} inherits from {1}.", t, t.BaseType)
End Sub
End Class
I följande exempel används rekursion för att lista den fullständiga arvshierarkin för varje klass som finns i en sammansättning. Exemplet definierar en klass med namnet C som härleds från en klass med namnet B, som i sin tur härleds från en klass med namnet A.
using System;
public class Example
{
public static void Main()
{
foreach (var t in typeof(Example).Assembly.GetTypes()) {
Console.WriteLine("{0} derived from: ", t.FullName);
var derived = t;
do {
derived = derived.BaseType;
if (derived != null)
Console.WriteLine(" {0}", derived.FullName);
} while (derived != null);
Console.WriteLine();
}
}
}
public class A {}
public class B : A
{}
public class C : B
{}
// The example displays the following output:
// Example derived from:
// System.Object
//
// A derived from:
// System.Object
//
// B derived from:
// A
// System.Object
//
// C derived from:
// B
// A
// System.Object
type A() = class end
type B() = inherit A()
type C() = inherit B()
module Example =
[<EntryPoint>]
let main _ =
for t in typeof<A>.Assembly.GetTypes() do
printfn $"{t.FullName} derived from: "
let mutable derived = t
while derived <> null do
derived <- derived.BaseType
if derived <> null then
printfn $" {derived.FullName}"
printfn ""
0
// The example displays the following output:
// Example derived from:
// System.Object
//
// A derived from:
// System.Object
//
// B derived from:
// A
// System.Object
//
// C derived from:
// B
// A
// System.Object
Public Class Example
Public Shared Sub Main()
For Each t In GetType(Example).Assembly.GetTypes()
Console.WriteLine("{0} derived from: ", t.FullName)
Dim derived As Type = t
Do
derived = derived.BaseType
If derived IsNot Nothing Then
Console.WriteLine(" {0}", derived.FullName)
End If
Loop While derived IsNot Nothing
Console.WriteLine()
Next
End Sub
End Class
Public Class A
End Class
Public Class B : Inherits A
End Class
Public Class C : Inherits B
End Class
' The example displays the following output:
' Example derived from:
' System.Object
'
' A derived from:
' System.Object
'
' B derived from:
' A
' System.Object
'
' C derived from:
' B
' A
' System.Object
Kommentarer
Bastypen är den typ som den aktuella typen ärver direkt från.
Object är den enda typen som inte har någon bastyp. Därför null returneras den som bastypen Objectför .
Gränssnitt ärver från noll eller fler basgränssnitt. Därför returnerar null den här egenskapen om objektet Type representerar ett gränssnitt. Basgränssnitten kan fastställas med GetInterfaces eller FindInterfaces.
Om strömmen Type representerar en konstruerad allmän typ återspeglar bastypen de allmänna argumenten. Tänk till exempel på följande deklarationer:
class B<U> { }
class C<T> : B<T> { }
type B<'U>() = class end
type C<'T>() = inherit B<'T>()
Class B(Of U)
End Class
Class C(Of T)
Inherits B(Of T)
End Class
För den konstruerade typen C<int> (C(Of Integer) i Visual Basic) returnerar egenskapen BaseTypeB<int>.
Om den aktuella Type representerar en typparameter av en allmän typdefinition BaseType returnerar klassvillkoret, det vill s.v.s. den klass som typparametern måste ärva. Om det inte finns någon klassbegränsning BaseType returnerar System.Object.
Den här egenskapen är skrivskyddad.