Common Type System (CTS) är en standard som specificerar hur datatyper ter sig i ett datorminne. Målet är att låta program som är skrivna i olika programspråk lätt ska kunna utbyta information med varandra. I ett programspråk kan en typ beskrivas som en definition av en mängd med värden (till exempel heltal mellan 0 och 10), och de tillåtna operationerna som kan utföras med dessa värden.
Specifikationen för CTS är en del av Ecma standard 335, "Common Language Infrastructure (CLI) Partitions I to VI." CLI och CTS skapades av Microsoft, och Microsoft .NET framework är en implementation av standarden.
CTS stödjer följande två typer:
Värdetyper
int
, char
, bool
osv.) och strukturer är värdetyper.Referenstyper
Följande exempel visar skillnaderna mellan värdetyper och referenstyper.
Imports SystemClass Class1 Public Value As Integer = 0End Class 'Class1 Class Test Shared Sub Main() Dim val1 As Integer = 0 Dim val2 As Integer = val1 val2 = 123 Dim ref1 As New Class1() Dim ref2 As Class1 = ref1 ref2.Value = 123 Console.WriteLine("Värden: {0}, {1}", val1, val2) Console.WriteLine("Referenser: {0}, {1}", ref1.Value, ref2.Value) End Sub 'MainEnd Class 'Test
Utskriften från exemplet ovan
Värden: 0, 123Referenser: 123, 123
Konvertering av värdetyp till en referenstyp kallas boxning. Detta är möjligt då värdetyper och referenstyper båda ärver basklassen System.Object
.
Int32 x = 10; object o = x ; // Implicit boxningConsole.WriteLine("The Object o = {0}",o); // skriver ut 10
Men en Int32 kan också bli explicit boxad:
Int32 x = 10; object o = (object) x; // Explicit boxningConsole.WriteLine("The object o = {0}",o); // skriver ut 10
På liknande sätt kan den bli konverterad tillbaka till en värdetyp.
Int32 x = 5; object o = x; // Implicit boxningx = o; // Implicit utboxning
|