Die Datentypen von C# können in drei Kategorien unterteilt werden: numerische Typen, Referenztypen und Zeigertypen. Zeigertypen werden nur in unsicherem Code verwendet.
Zu den Werttypen gehören einfache Typen (z. B. Zeichentypen, Gleitkommatypen und Ganzzahltypen usw.), Sammlungstypen und Strukturtypen. Zu den Referenztypen gehören Klassentypen, Schnittstellentypen, repräsentative Typen und Array-Typen.
Der Unterschied zwischen Werttypen und Referenztypen besteht darin, dass Variablenwerte von Werttypen direkt Daten enthalten, während Variablen von Referenztypen ihre Referenzen in Objekten speichern. Bei Variablen vom Referenztyp ist es durchaus möglich, dass zwei verschiedene Variablen auf dasselbe Objekt verweisen. Auf diese Weise wirken sich Operationen an einer Variablen auf das Objekt aus, auf das die andere Variable verweist. Bei Variablen vom Typ „Wert“ hat jede Variable ihren eigenen Wert, sodass Operationen an einer Variablen keine Auswirkungen auf eine andere Variable haben können.
1 Werttyp
Alle Werttypen deklarieren implizit einen öffentlichen, parameterlosen Konstruktor, der als Standardkonstruktor bezeichnet wird. Der Standardkonstruktor gibt eine Instanz eines Werttyps zurück, der anfänglich Null ist und als Standardwert bezeichnet wird.
Für sbyte, byte, short, ushort, int, uint, long, ulong ist der Standardwert 0.
Für char ist der Standardwert „x0000“
Für float ist der Standardwert 0,0F
Für double ist der Standardwert 0,0D
Für decimal ist der Standardwert 0 . 0M
Für bool ist der Standardwert false
Für einen Aufzählungstyp ist der Standardwert 0
Für einen Strukturtyp besteht die Standardwerteinstellung darin, die Felder aller Werttypen auf ihren jeweiligen Wert zu setzen Standardwerte. Die Felder aller Referenztypen werden leer zugewiesen
1.1 Einfache Typen
C# stellt eine Reihe vordefinierter Strukturtypen bereit, die als einfache Typen bezeichnet werden. Einfache Typen werden mithilfe reservierter Wörter definiert, bei denen es sich lediglich um Pseudonyme für vordefinierte Strukturtypen im System-Namespace handelt. Int ist beispielsweise ein reserviertes Wort, System. Int32 ist ein vordefinierter Typ im System-Namespace. Ein einfacher Typ ist genau dasselbe wie sein Alias-Strukturtyp, das heißt, das Schreiben von int ist dasselbe wie das Schreiben von System. Int32 ist das gleiche. Zu den einfachen Typen gehören hauptsächlich Ganzzahlen, Gleitkommatypen, Dezimaltypen, Boolesche Typen und Zeichentypen
1.1.1 Ganzzahltypen
C# unterstützt 9 Ganzzahltypen: sbyte, byte, short, ushort, int, uint, long, ulong und char.
Sbyte: stellt eine vorzeichenlose 8-Bit-Ganzzahl dar, der Wertebereich liegt zwischen -128 und 127
Byte: stellt eine vorzeichenlose 8-Bit-Ganzzahl dar, der Wertebereich liegt zwischen 0 und 255
Kurz: stellt a dar vorzeichenbehaftete 16-Bit-Ganzzahl im Bereich von -32768 bis 32767
ushort: stellt eine vorzeichenbehaftete 16-Bit-Ganzzahl im Bereich von -32768 bis 32767 dar
Int: stellt eine vorzeichenbehaftete 32-Bit-Ganzzahl im Bereich von -2147483648 bis 2147483648 dar
uint: Stellt eine vorzeichenlose 32-Bit-Ganzzahl im Bereich von 0 bis 4294967295 dar.
Long: Stellt eine vorzeichenlose 64-Bit-Ganzzahl im Bereich von -9223372036854775808 bis 9223372036854775808 dar.
Ulong: Stellt eine vorzeichenlose 6 dar 4-Bit-Ganzzahl, im Bereich von 0 bis 18446744073709551615.
char: stellt eine vorzeichenlose 16-Bit-Ganzzahl im Bereich von 0 bis 65535 dar.
Mögliche Werte vom Typ Char entsprechen dem Unicode-Zeichensatz.
Der Char-Typ weist im Vergleich zu anderen Ganzzahltypen die folgenden zwei Unterschiede auf:
a, es gibt keine implizite Konvertierung von anderen Typen in den Char-Typ. Selbst für Typen wie sbyte, byte und ushort, die den Typ char vollständig zur Darstellung ihrer Werte verwenden können, gibt es keine implizite Konvertierung von sbyte, byte und ushort in char.
b. Konstanten vom Typ char müssen in Zeichenform geschrieben werden, wenn sie ein Typkonvertierungspräfix haben. Beispielsweise gibt es drei Zuweisungsformen für (char)10:
char chsomechar="A"; Es gibt die folgenden Escape-Zeichen im Typ:
1, ' wird verwendet, um einfache Anführungszeichen darzustellen
2, " wird verwendet, um doppelte Anführungszeichen darzustellen
3, \ wird verwendet, um Backslash darzustellen
4,Der Dezimaltyp ist ideal für Finanz- und Währungsoperationen. Der Wertebereich reicht von 1,0*10 -28 bis 7,9*10 28, mit einer Genauigkeit von 28 Nachkommastellen. Wenn einer der Operanden in einer binären Operation vom Typ Dezimalzahl ist, ist der andere Operand vom Typ Ganzzahl oder Dezimalzahl. Ganzzahlen werden vor Operationen in Dezimaltypen umgewandelt. Wenn eine arithmetische Operation an einem Dezimaltyp einen Wert erzeugt, der für das Format des Dezimaltyps zu klein ist, ist das Ergebnis der Operation 0. Wenn eine arithmetische Operation an einem Dezimaltyp einen Wert ergibt, der für das Format des Dezimaltyps zu groß ist, wird ein Überlauffehler ausgelöst. Der Dezimaltyp hat eine höhere Genauigkeit als der Gleitkommatyp, aber der Zahlenbereich ist relativ viel kleiner. Beim Konvertieren einer Zahl vom Typ Gleitkomma in eine Zahl vom Typ Dezimal tritt ein Überlauffehler auf, und beim Konvertieren einer Zahl vom Typ Dezimal in eine Zahl vom Typ Gleitkomma tritt ein Genauigkeitsverlust auf. Daher gibt es keine implizite oder explizite Konvertierung zwischen den beiden Typen. Boolescher Typ: Der Wert ist wahr oder falsch. Es gibt keinen Standard für die Konvertierung boolescher Typen in andere Typen.
1.2 Aufzählungstyp
Die für Elemente des Aufzählungstyps verwendeten Typen können nur Long, Int, Short und Byte sein. Der Standardtyp ist int. Der Standardwert des ersten Elements ist 0 und jedes nachfolgende Element wird um 1 erhöht. Sie können Elementen direkt Werte zuweisen. Zum Beispiel:
enum monthnames { January=1, February, march=31 }; 可以强制定义其他类型,如: enum monthnames : byte {January , February, March };
1.3 Strukturtyp
Der Strukturtyp ist auch ein Werttyp. Der Zweck seiner Verwendung besteht darin, kleine Objekte zu erstellen, um Speicherplatz zu sparen. . Das folgende Beispiel stellt eine IP-Adresse mit 4 Feldern vom Typ Byte dar.
using System; Struct IP //声明结构 { public byte b1,b2,b3,b4; } Class test { public static void Main() { IP myIP; myIP.b1=192; myIP.b2=168; myIP.b3=1; myIP.b4=101; Console.Write("{0}.{1}。", myIP.b1, myIP.b2); Console.Write("{0}.{1}", myIP.b3, myIP.b4); } }
2 Referenztypen
Referenztypen umfassen Klassentypen, Schnittstellentypen, repräsentative Typen und Array-Typen.
2.1 Klassentyp
Ein Klassentyp definiert eine Datenstruktur, die Datenelemente (wie Konstanten, Felder und Ereignisse usw.) und Funktionselemente (wie Methoden, Eigenschaften, Indizes) enthält , Operationen, Konstruktoren und Destruktoren usw.) und verschachtelte Typen. Vererbung wird unterstützt.
2.2 Objekttyp
Der Objekttyp ist der ultimative Basistyp für alle anderen Typen. Jeder Typ in C# wird direkt oder indirekt vom Objektklassentyp abgeleitet.
2.3 String-Typ
Der String-Typ ist eine versiegelte Klasse, die direkt vom Objekt geerbt wird. Werte vom Typ String können als String-Literale geschrieben werden.
2.4 Schnittstellentyp
Eine Schnittstelle deklariert einen Referenztyp mit nur abstrakten Mitgliedern. Die Schnittstelle verfügt nur über Methodenflags, aber keinen Ausführungscode. Wenn beim Definieren einer Klasse die Klasse von einer Schnittstelle abgeleitet wird, kann sie von mehreren Schnittstellen abgeleitet werden. Wenn die Klasse jedoch von einer Klasse abgeleitet wird, kann sie nur von einer Klasse abgeleitet werden.
Deklaration von Methoden, zum Beispiel:
interface iface { void showmyface(); }
2.5 Darstellungstyp
stellt einen Verweis auf eine statische Methode oder Objektinstanz dar und verweist auf die Instanzmethode des Objekts. Am nächsten kommt der Zeiger in c/c++, aber der Zeiger kann nur auf statische Funktionen zugreifen, was bedeutet, dass er sowohl auf statische Methoden als auch auf Instanzmethoden zugreifen kann.
2.6 Array
Ein Array ist eine Datenstruktur, die eine Liste von Variablen enthält. Array-Variablen werden auch Array-Elemente genannt. Sie haben den gleichen Typ. Der Elementtyp eines Arrays kann jeder Typ sein, einschließlich Array-Typen. Arrays verwenden Indizes, um die Indexnummer jedes Array-Elements zu bestimmen. Ein Array mit nur einem Index wird als eindimensionales Array bezeichnet, und ein Array mit mehr als einem Index wird als mehrdimensionales Array
bezeichnet.
Beispiel: int[] a={0, 2, 4, 6, 8}; Äquivalent zu int[] a=new int[] {0, 2, 4, 6, 8};
Auch Es kann wie folgt initialisiert werden: a[0]=0; a[2]=4;
int[] a; /int Eindimensionales Array vom Typ
int[,] a; //Zweidimensionales Array vom Typ int
int[,,] a; //Dreidimensionales Array vom Typ int
int[ ] []a; / /Array vom Typ int
int[][][]a; //Array vom Typ int
Die Länge jeder Dimension des Arrays ist nicht Teil davon der Array-Typ, die Länge der Dimension. Sie wird in der Array-Erstellungsanweisung angegeben, nicht im Array-Typ
, zum Beispiel:
int[,,] a3=new int[10, 20, 30];
a3 ist eine Array-Variable. Int[,,] gibt nicht die Länge des Arrays an, sondern nur die Array-Erstellungsanweisung new int[10, 20, 30].
Das folgende Beispiel erstellt ein Array von Arrays:
int[][] J=new int[3][];
J[0]=new int[] {1, 2, 3};
J[1]=new int[] {1, 2, 3, 4, 5, 6};
J[2]=new int[] {1, 2, 3, 4, 5, 6 , 7, 8, 9};
Das Obige ist der Inhalt von C#-Datentypen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!