Post on 06-Feb-2018
transcript
C#-Grundlagen Kompakt
2014
Thomas Meyer eLearning .NET und VBA-Development
21.08.2014
C#-Grundlagen Kompakt beschreibt die grundlegenden syntaktischen Regeln für C# ab Version 4.0 (Visual Studio 2010).
Anregungen, Hinweise und Korrektur-Vorschläge nehme ich jederzeit gerne
entgegen: elearning@thomeyweb.de
Version 1.11
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
2
C#-Grundlagen Kompakt
Inhalt
Verwendete Stile ___________________________________________________________________ 6
Konventionen _____________________________________________________________________ 7
Bezeichner allgemein ____________________________________________________________________ 7
Events ________________________________________________________________________________ 7
Schnittstellen ___________________________________________________________________________ 7
Einfache Datentypen (Werttypen) _____________________________________________________ 8
Integrierte numerische Typen _____________________________________________________________ 8
Ganzzahlige Typen ________________________________________________________________________________ 8
Gleitkommatypen ________________________________________________________________________________ 8
Integrierter Wahrheitstyp _________________________________________________________________ 8
Integrierter Zeichentyp ___________________________________________________________________ 9
Explizit zu definierende Typen _____________________________________________________________ 9
Komplexe Datentypen (Verweistypen/Referenztypen) ____________________________________ 9
Integrierte Typen _______________________________________________________________________ 9
Explizit zu definierende Typen _____________________________________________________________ 9
Operatoren ______________________________________________________________________ 10
Zuweisungsoperatoren __________________________________________________________________ 10
Arithmetische Zuweisungsoperatoren _______________________________________________________________ 10
Logische Verknüpfungs-Zuweisungsoperatoren _______________________________________________________ 10
Logische Bit-Zuweisungsoperatoren _________________________________________________________________ 10
Arithmetische Operatoren _______________________________________________________________ 10
Unär __________________________________________________________________________________________ 10
Binär __________________________________________________________________________________________ 10
Logische Operatoren ____________________________________________________________________ 11
Relationale Operatoren ___________________________________________________________________________ 11
Verknüpfungs-Operatoren ________________________________________________________________________ 11
Bit-Operatoren__________________________________________________________________________________ 12
Zeichenketten-Operator _________________________________________________________________ 12
Weitere Operatoren ____________________________________________________________________ 13
Operator-Rangfolge ____________________________________________________________________ 13
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
3
Modifizierer ______________________________________________________________________ 14
Zugriffsmodifizierer _____________________________________________________________________ 14
Weitere Modifizierer____________________________________________________________________ 14
Variablen-Deklaration _____________________________________________________________ 15
Variablen-Definitionen _____________________________________________________________ 15
Variablen _____________________________________________________________________________ 15
Arrays________________________________________________________________________________ 15
Eindimensionale Arrays ___________________________________________________________________________ 15
Mehrdimensionale Arrays _________________________________________________________________________ 16
Verzweigte Arrays (jagged arrays) __________________________________________________________________ 16
Deklaration/Definition von Werttypen, die null-Werte zulassen ____________________________ 17
Implizite Typisierung (Typinferenz) ___________________________________________________ 18
Implizite Referenzen _______________________________________________________________ 18
NULL-Objekt __________________________________________________________________________ 18
Instanz-Referenz _______________________________________________________________________ 19
Basisklassen-Referenz ___________________________________________________________________ 20
Explizite Definition von Datentypen __________________________________________________ 21
Enumerationen ________________________________________________________________________ 21
Delegaten ____________________________________________________________________________ 22
Delegattyp-Definition ____________________________________________________________________________ 22
Delegat-Definition _______________________________________________________________________________ 22
Aufruf _________________________________________________________________________________________ 22
Multicast-Delegate _____________________________________________________________________ 23
Delegattyp-Definition ____________________________________________________________________________ 23
Delegat-Definition _______________________________________________________________________________ 23
Aufruf _________________________________________________________________________________________ 23
Strukturen ____________________________________________________________________________ 24
Klassen _______________________________________________________________________________ 25
Schnittstellen __________________________________________________________________________ 26
Explizite Implementierung (Klasse, Struktur) __________________________________________________________ 27
Objektinitialisierer _____________________________________________________________________ 28
Member-Definitionen ______________________________________________________________ 29
Konstanten ___________________________________________________________________________ 29
Typ-Konstante __________________________________________________________________________________ 29
Instanz-Konstante _______________________________________________________________________________ 29
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
4
Felder ________________________________________________________________________________ 30
Eigenschaften (typisch) __________________________________________________________________ 31
Automatisch implementierte Eigenschaft ____________________________________________________________ 32
Konstruktoren _________________________________________________________________________ 33
Konstruktoren in Klassen _________________________________________________________________________ 33
Konstruktoren in Strukturen _______________________________________________________________________ 34
Destruktor ____________________________________________________________________________ 35
Zerstören von Objekten __________________________________________________________________________ 36
using-Anweisung ________________________________________________________________________________ 37
Methoden ____________________________________________________________________________ 38
Methoden ohne Rückgabewert ____________________________________________________________________ 38
Methoden mit Rückgabewert ______________________________________________________________________ 39
Methodenüberladung ____________________________________________________________________________ 39
Erweiterungsmethoden _________________________________________________________________ 40
Indexer (typisch) _______________________________________________________________________ 41
Operatoren (Operatorüberladung) ________________________________________________________ 43
Implizite Konvertierung ___________________________________________________________________________ 44
Explizite Konvertierung ___________________________________________________________________________ 45
Ereignisse _____________________________________________________________________________ 46
Definiton Ereignis-Delegat (typisch) _________________________________________________________________ 46
Abonnieren eines Ereignisses ______________________________________________________________________ 46
Kündigen eines Ereignis-Abonnements ______________________________________________________________ 46
Ereignis-Auslösung (typisch) _______________________________________________________________________ 46
Ereignis-Auslösung als vererbbare Methode (typisch) __________________________________________________ 47
Parameter ____________________________________________________________________________ 48
Obligatorische Parameter _________________________________________________________________________ 48
Optionale Parameter _____________________________________________________________________________ 50
Optionale Parameterliste (Parameterarray) ___________________________________________________________ 50
Typparameter (Generics) ________________________________________________________________ 51
Typparameter in Delegates ________________________________________________________________________ 51
Typparameter in Strukturen _______________________________________________________________________ 51
Typparameter in Klassen __________________________________________________________________________ 52
Typparameter in Schnittstellen _____________________________________________________________________ 52
Typparameter in Methoden _______________________________________________________________________ 53
Einschränkungen (Constraints) _____________________________________________________________________ 54
Anweisungen ____________________________________________________________________ 55
Anweisung ____________________________________________________________________________ 55
Anweisungsblock_______________________________________________________________________ 55
Kommentare _____________________________________________________________________ 56
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
5
Zeilenkommentar ______________________________________________________________________ 56
Blockkommentar _______________________________________________________________________ 56
Dokumentationskommentar _____________________________________________________________ 57
Kontrollstrukturen ________________________________________________________________ 59
goto _________________________________________________________________________________ 59
if ____________________________________________________________________________________ 59
switch _______________________________________________________________________________ 60
Schleifen ________________________________________________________________________ 62
bestimmte Schleifen ____________________________________________________________________ 62
for ____________________________________________________________________________________________ 62
foreach ________________________________________________________________________________________ 63
unbestimmte Schleifen __________________________________________________________________ 64
while __________________________________________________________________________________________ 64
do ____________________________________________________________________________________________ 64
Schleifensteuerung _____________________________________________________________________ 65
Anonyme Methoden _______________________________________________________________ 66
Anonyme Methoden als Delegatparameter _________________________________________________ 66
Lambda-Ausdrücke ________________________________________________________________ 67
Ausdrucks-Lamda _______________________________________________________________________________ 67
Anweisungs-Lambda _____________________________________________________________________________ 67
Projektion ____________________________________________________________________________ 68
Prädikat ______________________________________________________________________________ 68
Zeichenfolgen ____________________________________________________________________ 69
Escape-Sequenzen in Zeichenfolgen _______________________________________________________ 69
wörtliche Zeichenfolge (@)_______________________________________________________________ 69
@Bezeichner ________________________________________________________________________________ 69
@"Zeichenkette" ________________________________________________________________________________ 69
Formatzeichenfolgen ___________________________________________________________________ 70
Standardmäßige Zahlenformatzeichenfolgen _________________________________________________________ 70
Standardmäßige Datum- und Uhrzeitformatzeichenfolgen ______________________________________________ 71
Standardmäßige Enumerationszeichenfolgen _________________________________________________________ 72
Benutzerdefinierte Zahlenformatzeichenfolgen _______________________________________________________ 73
Benutzerdefinierte Datum- und Uhrzeitformatzeichenfolgen ____________________________________________ 75
Kombinierte Formatierung _______________________________________________________________ 77
Darstellung im Dualen Zahlensystem (Binärformat) ___________________________________________ 78
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
6
Glossar __________________________________________________________________________ 83
Index ___________________________________________________________________________ 84
Verwendete Stile normal ................................ Pflichtangabe
Courier ........................... beliebige Bezeichner
kursiv ................................. optionale Angaben, Erweiterungen, Elemente, etc. hellblau ............................... Schlüsselwort
grün ..................................... Datentyp (Klasse, Struktur, Interface, Enumeration, Delegate) Text .................................... Anmerkungen, Hinweise, Erläuterungen
Text .................................... Ausnahmen, Beschränkungen
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
7
Konventionen
Bezeichner allgemein Für Bezeichner sind Buchstaben, Zahlen und Unterstrich erlaubt.
Bezeichner sollten aussagekräftig und selbsterklärend sein ("mnemonic identifier"); Ausnahme: kurzfristige Variablen, z.B. Iterationsvariablen, bestehen i.d.R. nur aus 1-3 Zeichen.
Bei zusammengesetzten Wörtern beginnt jedes neue Wort mit Großbuchstaben ("Höckerschreibweise", z.B. "checkInputBuffer").
Der Unterstrich wird nur bei zusammengesetzten Wörtern verwendet und nur, wenn der gesamte Bezeichner aus Großbuchstaben besteht, z. B. bei Konstanten (Ausnahme: backing fields).
Lokale Bezeichner beginnen mit einem Kleinbuchstaben ("CamelCase" [kurz "für lowerCamelCase"], z.B. Parametervariable "args").
Öffentliche (anwendungsweite) Bezeichner beginnen mit einem Großbuchstaben ("PascalCase" [statt "UpperCamelCase"], z.B. Methodenbezeichner "Main").
Bezeichner dürfen nicht mit einer Zahl beginnen.
Bezeichner dürfen keinem Schlüsselwort entsprechen (Ausnahme: wörtliche Zeichenfolge "@").
Die Ungarische Notation (weder Apps Hungarian [PräfixDatentypBezeichner] noch System Hungarian [DatentypBezeichner]) ist in C# nicht üblich!
bezeichner ........................... private oder lokale Variable oder Member: beginnt mit Kleinbuchstaben Bezeichner ........................... nicht-private Variable, Member oder Typ: beginnt mit Großbuchstaben _Bezeichner ......................... backing field für gleichnamige Eigenschaft: beginnt mit Unterstrich BEZEICHNER ..................... Konstante; besteht aus Großbuchstaben und Unterstrich zur Worttrennung
Events EreignisEventHandler .......... Delegate für Ereignis: Ereignis-Bezeichner mit Suffix "EventHandler" EreignisEventArgs ............... Klasse für Ereignis-Parameter: Ereignis-Bezeichner mit Suffix "EventArgs" OnEreignis ........................... Methode zur Auslösung des Ereignisses: Ereignis-Bezeichner mit Präfix "On" Objekt_Ereignis ................... EventHandler: Ereignis-Bezeichner mit Präfix Objektbezeichner plus Unterstrich
Schnittstellen ISchnittstelle ........................ Schnittstellen-Bezeichner mit Präfix "I"
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
8
Einfache Datentypen (Werttypen) Es ist jeweils die C#-Syntax sowie der zugehörige .NET-Typ angegeben. Beide Versionen können beliebig benutzt werden.
Das Typ-Suffix beschreibt das Literalzeichen, welches hinter dem numerischen Literal angegeben wird, um den Compiler den zu verarbeitenden Datentyp vorzugeben. Standardmäßig werden Zahlenliterale ohne
Dezimalzeichen als int/Int32-Typ und Zahlenliterale mit Dezimalzeichen als double/Double-Typ verarbeitet.
Integrierte numerische Typen
Ganzzahlige Typen
byte / Byte .......................... ganze 8-Bit-Zahl ohne Vorzeichen
Wertebereich: 0…255
short / Int16 ........................ ganze 16-Bit-Zahl mit Vorzeichen Wertebereich: -32.798…32.767
int / Int32 ............................. ganze 32-Bit-Zahl mit Vorzeichen Wertebereich: -2.147.483.648…2.147.483.647
long / Int64 ......................... ganze 64-Bit-Zahl mit Vorzeichen Wertebereich: -9.223.372.036.854.775.808…9.223.372.036.854.775.807; Typ-Suffix: L (l)
Nicht-CLS-konforme ganzzahlige Typen
sbyte / SByte ...................... ganze 8-Bit-Zahl mit Vorzeichen Wertebereich: -128…127
ushort / UInt16 ................... ganze 16-Bit-Zahl ohne Vorzeichen Wertebereich: 0…65.535
uint / UInt32 ........................ ganze 32-Bit-Zahl ohne Vorzeichen
Wertebereich: 0…4.294.967.295; Typ-Suffix: U/u
ulong / UInt64 .................... ganze 64-Bit-Zahl ohne Vorzeichen
Wertebereich: 0…18.446.744.073.709.551.615; Typ-Suffix: UL (ul) Bei integrierten ganzzahligen Typen kann eine Wertzuweisung mit Dezimal-Literalen oder mit Hexadezimal-Literalen erfolgen. Bei Hexadezimalzeichen ist als Präfix 0x voranzustellen (z. B. 0xFF).
Gleitkommatypen
float / Single ....................... 32-Bit-Gleitkommazahl mit 7 Stellen Genauigkeit Wertebereich: ca. ± 1,5e-45…± 3,4e38; Typ-Suffix: F/f
double / Double ................. 64-Bit-Gleitkommazahl mit 15-16 Stellen Genauigkeit
Wertebereich: ca. ± 5,0e-324…± 1,7e308; Typ-Suffix: D/d
Decimal
decimal / Decimal .............. 128-Bit-Gleitkommazahl mit 28-29 signifikanten Stellen
Wertebereich: ca. (-7,9*1028…7,9*1028)/(100…28); Typ-Suffix: M/m
Der Decimal-Typ besteht aus einem 1-Bit-Vorzeichen, einer 96-Bit-Ganzzahl und einem Skalierungsfaktor 10 mit einem Exponenten von 0 bis 28, der für die Ganzzahldivision verwendet wird. Dadurch ergibt sich ein geringerer Wertebereich, aber eine höhere Genauigkeit.
Eine implizite Konvertierung von Gleitkommatypen in Decimal findet nicht statt.
Integrierter Wahrheitstyp bool / Boolean ................... 8-Bit-Wert
Wertebereich: true oder false
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
9
Integrierter Zeichentyp char / Char ......................... 16-Bit-Unicode-Zeichen
Wertebereich: 0x0000…0xFFFF
Auch wenn im char-Typ ein Wert von 0 bis 65535 gespeichert wird, wird bei Ausgabe das entsprechende Unicode-Zeichen ausgegeben.
Für die Zuweisung muss ein Zeichen in Hochkommata angegeben werden oder eine Konvertierung aus einem Zahlen-Literal bzw. -Ausdruck erfolgen.
Explizit zu definierende Typen enum ................................... Gruppierung benannter Konstanten (Enumeratorliste);
Definition siehe weiter unten
struct ................................... Kapselung kleinerer Gruppen zusammengehöriger Variablen; Definition siehe weiter unten
Komplexe Datentypen (Verweistypen/Referenztypen) Es ist jeweils die C#-Syntax sowie der zugehörige .NET-Typ angegeben.
Integrierte Typen string / String ...................... Zeichenkette; Informationen zu Escape-Sequenzen, wörtlichen Zeichenfolgen (@) und Formatzeichenfolgen siehe weiter unten;
Indizierung eines string-Objektes erlaubt Zugriff auf einzelne char.
Für die Zuweisung eines Zeichenketten-Literals ist dieses in Anführungszeichen einzuschließen.
object / Object .................... Basisklasse (Basistyp) aller Typen
dynamic ............................. Verhalten i.d.R. wie object, jedoch werden Typen (erst) zur Laufzeit aufgelöst
Explizit zu definierende Typen class .................................... Definition eigener Objekte oder instanzloser Basisfunktionalitäten;
Definition siehe weiter unten
interface.............................. Definition obligatorischer Klassen- oder Struktur-Member; Definition siehe weiter unten
delegate.............................. Kapselung von Methoden;
Definition siehe weiter unten
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
10
Operatoren
Zuweisungsoperatoren = .......................................... Zuweisung Mehrfachzuweisung bei bereits deklarierten Variablen ist möglich, z.B. x = y = z = 100;
=> ......................................... Lambda-Operator
Arithmetische Zuweisungsoperatoren
+= -= *= /= %=
Logische Verknüpfungs-Zuweisungsoperatoren
&= |= ^=
Logische Bit-Zuweisungsoperatoren
<<= >>=
Arithmetische Operatoren
Unär
+x ......................................... Vorzeichen Plus -x ......................................... Vorzeichen Minus ++x ...................................... Präinkrement (+1); Inkrement erfolgt vor Berechnung der Operation x++ ...................................... Postinkrement (+1); Inkrement erfolgt nach Berechnung der Operation --x ........................................ Prädekrement (-1); Dekrement erfolgt vor Berechnung der Operation x-- ......................................... Postdekrement (-1); Dekrement erfolgt nach Berechnung der Operation
Binär
x + y .................................... Addition x - y ..................................... Subtraktion x * y ..................................... Multiplikation x / y ..................................... Division x % y ................................... Modulo Restwert-Division; ist auch mit Gleitkomma-Zahlen möglich
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
11
Logische Operatoren true ...................................... Rückgabewert: logische Operation ist wahr
false ................................... Rückgabewert: logische Operation ist falsch
Relationale Operatoren
x == y .................................. Gleichwertigkeit (Äquivalenz) x != y ................................... Ungleichheit x < y .................................... Kleiner x > y .................................... Größer x <= y .................................. Kleiner oder gleich x >= y .................................. Größer oder gleich
x is T ................................... Typgleichheit; Ergebnis true, wenn x vom Datentyp T oder abgeleitet ist, sonst false
Verknüpfungs-Operatoren
Unär
!x ......................................... NOT (Negation)
x true false
Ergebnis false true
Binär
x & y .................................... AND (Konjunktion)
x true true false false
y true false true false
Ergebnis true false false false
x && y ................................. Bedingtes AND/short-circuit AND (Auswertung des 2. Operanden nur, wenn 1. Operand true)
x true true false false
y true false ungeprüft ungeprüft
Ergebnis true false false false
x | y ..................................... OR (Disjunktion)
x true true false false
y true false true false
Ergebnis true true true false
x || y .................................... Bedingtes OR/short-circuit OR (Auswertung des 2. Operanden nur, wenn 1. Operand false)
x true true false false
y ungeprüft ungeprüft true false
Ergebnis true true true false
x ^ y .................................... XOR (Antivalenz)
x true true false false
y true false true false
Ergebnis false true true false
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
12
Bit-Operatoren
Unär
~x ........................................ NOT (Negation)
x 1 0 1001
Ergebnis 0 1 0110
Binär
x & y .................................... AND (Konjunktion)
x 1 1 0 0
y 1 0 1 0
Ergebnis 1 0 0 0
x | y ..................................... OR (Disjunktion)
x 1 1 0 0
y 1 0 1 0
Ergebnis 1 1 1 0
x ^ y .................................... XOR (Antivalenz)
x 1 1 0 0
y 1 0 1 0
Ergebnis 0 1 1 0
x << y .................................. Linksverschiebung
x 1001 9
y 2
Ergebnis 0100 4
x >> y .................................. Rechtsverschiebung
x 1001 9
y 2
Ergebnis 0001 1
Zeichenketten-Operator x + y .................................... Verbindet zwei Zeichenketten miteinander (Konkatenation); alle Operanden
werden implizit in eine Zeichenkette konvertiert
x "Hallo" "Hallo"
y "Welt" 10
z 20
Ergebnis x+y "HalloWelt" Hallo10
Ergebnis x+y+z Hallo1020
Ergebnis x+(y+z) Hallo30
C#-Grundlagen Kompakt Version 1.11
© Thomas Meyer, Celle
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz. (http://creativecommons.org/licenses/by-sa/3.0/de/)
13
Weitere Operatoren x.y ...................................... Memberzugriff (Punktoperator) () .......................................... Präferenzierung x() ......................................... Methodenaufruf, Delegataufruf
(T)x ...................................... Typkonvertierung ohne Überlaufprüfung [] ........................................... Collection-Index, Indexeraufruf, Attribute, Aufhebung Zeiger-Indizierung (nur in
unsafe-Code)
new...................................... Objekt-Instanziierung
typeof(T) ............................. Erstellen eines Type-Objektes aus einem Datentyp
sizeof(T) .............................. Ermitteln der von einem Datentyp verwendeten Anzahl Bytes; in safe-Code nur für integrierte Typen und Enumerationen zulässig
checked(), checked{} ........ Aktivieren der Überlaufprüfung bei Verwendung der Typkonvertierung mit dem Typkonvertierungsoperator entweder für einen Argument-Ausdruck oder für alle Ausdrücke innerhalb des checked-Anweisungsblocks
unchecked(), unchecked{} Deaktivieren der Überlaufprüfung bei Verwendung der Typkonvertierung mit dem Typkonvertierungsoperator entweder für einen Argument-Ausdruck oder für alle Ausdrücke innerhalb des unchecked-Anweisungsblocks
default(T) ............................ Rückgabe des Standardwertes des Datentyps T
delegate() { } ....................... Definition einer anonymen Methode, z. B. als Delegat-Parameter
x ?? y .................................. NULL-Sammeloperator (null coalesce); Ergebnis 1. Operand (x), wenn nicht null, sonst 2. Operand (y)
x ? y : z ............................... Bedingter Operator (conditional operator) Ergebnis 2. Operand (y), wenn 1. Operand (x) true, sonst 3. Operand (y)
x as T ................................. Typkonvertierung zwischen Referenztypen;
Ergebnis x als Datentyp T, wenn konvertierbar, sonst null &x ........................................ Ermitteln der Adresse des Operanden (AddressOf); nur in unsafe-Code zulässig -> ........................................ kombiniert Zeigerdereferenzierung und Memberzugriff; nur in unsafe-Code
zulässig
Operator-Rangfolge
. () [] x++ x-- new typeof(T) checked unchecked default() delegate ->
+x -x ! ~ ++x --x (T)x true false &x sizeof(T)
* / %
+ -
<< >>
< > <= >= is as
== !=
&
^
|
&&
||
??
?:
= += -= *= /= %= &= |= ^= <<= >>= =>