Společný typ systému - Common Type System - Wikipedia
tento článek může být pro většinu čtenářů příliš technická na to, aby je pochopili.Srpna 2009) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
V Microsoftu .NET Framework, Společný typ systému (CTS) je standard, který specifikuje jak typ definice a specifické hodnoty typů jsou zastoupeny v paměti počítače. Účelem je umožnit programům napsaným v různých programovacích jazycích snadné sdílení informací. Jak se používá v programovací jazyky, a typ lze popsat jako definici sady hodnot (například „všechna celá čísla mezi 0 a 10“) a povolené operace s těmito hodnotami (například sčítání a odčítání).
Specifikace CTS je obsažena v Ecma standard 335, „Oddíly I až VI infrastruktury Common Language Infrastructure (CLI).“ The CLI a CTS byly vytvořeny společností Microsoft a Microsoft .NET framework je implementace standardu.
Funkce systému běžného typu
- Vytvoření rámce, který pomáhá povolit integraci napříč jazyky, zabezpečení typu a výkonné provádění kódu.
- Poskytnout objektově orientovaný model, který podporuje úplnou implementaci mnoha programovacích jazyků.
- Definovat pravidla, která musí jazyky dodržovat, což pomáhá zajistit, aby objekty napsané v různých jazycích mohly vzájemně interagovat.
- CTS také definuje pravidla, která zajišťují, aby datové typy objektů zapsaných v různých jazycích byly schopné vzájemné interakce.
- CTS také určuje pravidla pro viditelnost typu a přístup k členům typu, tj. CTS stanoví pravidla, podle kterých sestavení tvoří obor pro typ, a Common Language Runtime vynucuje pravidla viditelnosti.
- CTS definuje pravidla, kterými se řídí typ dědičnosti, virtuální metody a životnost objektu.
- Jazyky podporované .NET mohou implementovat všechny nebo některé běžné datové typy…
Když zaokrouhlování zlomkové hodnoty, na půli cesty k vyrovnání Ve výchozím nastavení se v celém rámci používá metoda „bankéře“. Od verze 2 je programátorem k dispozici také „Symetrické aritmetické zaokrouhlování“ (zaokrouhlování na polovinu od nuly).[1]
- používá se ke komunikaci s jinými jazyky
Zadejte kategorie
Společný typový systém podporuje dvě obecné kategorie typů:
- Typy hodnot
- Typy hodnot přímo obsahují jejich data a instance typů hodnot jsou buď alokovány na zásobník nebo přidělené vložené ve struktuře. Typy hodnot mohou být integrované (implementované modulem runtime), definované uživatelem nebo výčty.
- Referenční typy
- Referenční typy uložit odkaz na adresu paměti hodnoty a jsou přiděleny na halda. Referenční typy mohou být samy popisující typy, typy ukazatelů nebo typy rozhraní. Typ referenčního typu lze určit z hodnot typů, které samy popisují. Self-descriptioning types are further split into arrays and class types. Typy tříd jsou uživatelem definované třídy, typy hodnot v rámečku a delegáti.
Následující příklad napsaný v Visual Basic .NET ukazuje rozdíl mezi referenčními typy a hodnotovými typy:
Dovoz SystémTřída Třída1 Veřejnost Hodnota Tak jako Celé číslo = 0Konec Třída „Třída 1 Třída Test Sdílené Sub Hlavní() Ztlumit val1 Tak jako Celé číslo = 0 Ztlumit val2 Tak jako Celé číslo = val1 „Kódováno val2 = 123 Ztlumit ref1 Tak jako Nový Třída1() Ztlumit ref2 Tak jako Třída1 = ref1 ref2.Hodnota = 123 Řídicí panel.WriteLine(„Hodnoty: {0}, {1}, val1, val2) Řídicí panel.WriteLine(„Refs: {0}, {1}“, ref1.Hodnota, ref2.Hodnota) Konec Sub 'HlavníKonec Třída 'Test
Výstup z výše uvedeného příkladu
Hodnoty: 0, 123 Odkazy: 123, 123
Box a rozbalení
Box
Převádění typů hodnot na referenční typy se také označuje jako box. Jak je vidět v níže uvedeném příkladu, není nutné sdělit kompilátoru, že Int32 je zabalený do objektu, protože se o to postará sám.
Int32 X = 10; objekt Ó = X ; // Implicitní boxŘídicí panel.WriteLine("Objekt o = {0}",Ó); // vytiskne „Objekt o = 10“
Int32 však lze vždy explicitně zabalit takto:
Int32 X = 10; objekt Ó = (objekt) X; // Explicitní boxŘídicí panel.WriteLine("Objekt o = {0}",Ó); // vytiskne „Objekt o = 10“
Rozbalení
Následující příklad má v úmyslu ukázat, jak rozbalit referenční typ zpět na typ hodnoty. Nejprve je Int32 zabalen do objektu a poté je znovu vybalen. Upozorňujeme, že rozbalení vyžaduje výslovné obsazení.
Int32 X = 5; objekt o1 = X; // Implicitní boxX = (int)o1; // Explicitní rozbalení