• Keine Ergebnisse gefunden

Inhaltsverzeichnis. Teil I C# Vorwort Einführung 25

N/A
N/A
Protected

Academic year: 2022

Aktie "Inhaltsverzeichnis. Teil I C# Vorwort Einführung 25"

Copied!
17
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)
(2)

Vorwort 21

Teil I C# 1.0 23

1 Einführung 25

1.1 Hallo, Welt 26

1.2 Die Programmstruktur 27

1.3 Typen und Variablen 29

1.4 Ausdrücke 33

1.5 Anweisungen 35

1.6 Klassen und Objekte 39

1.6.1 Member 40

1.6.2 Zugriffsmodifizierer 41

1.6.3 Basisklassen 41

1.6.4 Felder 42

1.6.5 Methoden 43

1.6.6 Andere Funktionsmember 51

1.7 Strukturen (structs) 56

1.8 Arrays 58

1.9 Interfaces 60

1.10 Aufzählungen 61

1.11 Delegates 63

1.12 Attribute 64

(3)

2 Die lexikalische Struktur 67

2.1 Programme 67

2.2 Grammatik 67

2.2.1 Schreibweisen 68

2.2.2 Lexikalische Grammatik 69

2.2.3 Syntaktische Grammatik 69

2.3 Lexikalische Analyse 69

2.3.1 Zeilenendezeichen 70

2.3.2 Leerraum 71

2.3.3 Kommentare 71

2.4 Textelemente 73

2.4.1 Escape-Sequenzen für Unicode-Zeichen (Maskierung) 73

2.4.2 Bezeichner 74

2.4.3 Schlüsselwörter 76

2.4.4 Literale 77

2.4.5 Operatoren und Trennzeichen 84

2.5 Präprozessor-Direktiven 84

2.5.1 Symbole für die bedingte Kompilierung 85

2.5.2 Präprozessor-Ausdrücke 86

2.5.3 Deklarationsdirektiven 87

2.5.4 Direktiven für die bedingte Kompilierung 88

2.5.5 Diagnosedirektiven 92

2.5.6 Abschnittsdirektiven 92

2.5.7 Zeilendirektiven 93

3 Grundbegriffe 95

3.1 Anwendungsstart 95

3.2 Anwendungsende 97

3.3 Deklarationen 97

3.4 Member 100

3.4.1 Namespace-Member 100

3.4.2 Strukturmember 101

3.4.3 Aufzählungsmember 101

3.4.4 Klassenmember 101

3.4.5 Interface-Member 102

3.4.6 Array-Member 102

3.4.7 Delegate-Member 102

3.5 Memberzugriff 102

3.5.1 Zugriffsdeklaration 102

3.5.2 Zugriffsdomänen 104

3.5.3 Geschützter Zugriff für Instanzmember 107

3.5.4 Zugriffseinschränkungen 108

(4)

3.6 Signaturen und Überladung 109

3.7 Gültigkeitsbereiche 110

3.7.1 Verbergen von Namen 113

3.8 Namespace- und Typnamen 116

3.8.1 Vollständig qualifizierte Namen 118

3.9 Automatische Speicherverwaltung 119

3.10 Ausführungsreihenfolge 122

4 Typen 125

4.1 Wertetypen 126

4.1.1 Der Typ System.ValueType 127

4.1.2 Standardkonstruktoren 127

4.1.3 Strukturtypen 128

4.1.4 Einfache Typen 128

4.1.5 Integrierte Typen 129

4.1.6 Fließkommatypen 131

4.1.7 Der Datentyp decimal 133

4.1.8 Der Datentyp bool 134

4.1.9 Aufzählungstypen 134

4.2 Verweistypen 134

4.2.1 Klassentypen 135

4.2.2 Der Datentyp object 136

4.2.3 Der Datentyp string 136

4.2.4 Interface-Typen 136

4.2.5 Array-Typen 137

4.2.6 Delegate-Typen 137

4.3 Boxing und Unboxing 137

4.3.1 Boxing 137

4.3.2 Unboxing 139

5 Variablen 141

5.1 Kategorien von Variablen 141

5.1.1 Statische Variablen 142

5.1.2 Instanzvariablen 142

5.1.3 Array-Elemente 143

5.1.4 Werteparameter 143

5.1.5 Verweisparameter 143

5.1.6 Ausgabeparameter 144

5.1.7 Lokale Variablen 144

5.2 Standardwerte 145

5.3 Eindeutige Zuweisung 146

5.3.1 Ursprünglich zugewiesene Variablen 147

5.3.2 Ursprünglich nicht zugewiesene Variablen 147 5.3.3 Regeln zum Bestimmen der eindeutigen Zuweisung 148

(5)

5.4 Variablenreferenz 160 5.5 Die Unteilbarkeit von Variablenreferenzen 161

6 Konvertierungen 163

6.1 Implizite Konvertierungen 163

6.1.1 Identitäts-Konvertierung 164

6.1.2 Implizite numerische Konvertierung 164

6.1.3 Implizite Aufzählungskonvertierungen 165

6.1.4 Implizite Referenzkonvertierungen 165

6.1.5 Boxing 165

6.1.6 Implizite Konvertierungen konstanter Ausdrücke 166 6.1.7 Benutzerdefinierte implizite Konvertierungen 166

6.2 Explizite Konvertierungen 166

6.2.1 Explizite numerische Konvertierungen 167

6.2.2 Explizite Aufzählungskonvertierungen 169

6.2.3 Explizite Referenzkonvertierungen 170

6.2.4 Unboxing 170

6.2.5 Benutzerdefinierte explizite Konvertierungen 171

6.3 Standardkonvertierungen 171

6.3.1 Standardmäßige implizite Konvertierungen 171 6.3.2 Standardmäßige explizite Konvertierungen 171

6.4 Benutzerdefinierte Konvertierungen 171

6.4.1 Zulässige benutzerdefinierte Konvertierungen 172 6.4.2 Auswertung von benutzerdefinierten Konvertierungen 172 6.4.3 Implizite benutzerdefinierte Konvertierungen 174 6.4.4 Explizite benutzerdefinierte Konvertierungen 175

7 Ausdrücke 177

7.1 Klassifizierung von Ausdrücken 177

7.1.1 Werte von Ausdrücken 179

7.2 Operatoren 179

7.2.1 Vorrang und Orientierung 180

7.2.2 Überladen von Operatoren 181

7.2.3 Überladungsauflösung für unäre Operatoren 183 7.2.4 Überladungsauflösung für binäre Operatoren 183

7.2.5 Benutzerdefinierte Operatorkandidaten 184

7.2.6 Numerische Erweiterung 184

7.3 Membersuche 186

7.3.1 Basistypen 187

7.4 Funktionsmember 188

7.4.1 Argumentlisten 191

7.4.2 Überladungsauflösung 195

7.4.3 Aufruf von Funktionsmembern 197

(6)

7.5 Primäre Ausdrücke 200

7.5.1 Literale 200

7.5.2 Einfache Bezeichner 201

7.5.3 Geklammerte Ausdrücke 203

7.5.4 Memberzugriff 203

7.5.5 Aufrufausdrücke 206

7.5.6 Elementzugriff 209

7.5.7 this-Zugriff 211

7.5.8 base-Zugriff 212

7.5.9 Inkrement- und Dekrement-Postfixoperatoren 213

7.5.10 Der Operator new 214

7.5.11 Der Operator typeof 221

7.5.12 Die Operatoren checked und unchecked 222

7.6 Unäre Operatoren 225

7.6.1 Der unäre Plus-Operator 226

7.6.2 Der unäre Minus-Operator 226

7.6.3 Der Operator für die logische Negation 227

7.6.4 Der Operator für das bitweise Komplement 227 7.6.5 Die Inkrement- und Dekrement-Präfixoperatoren 228

7.6.6 Konvertierungsausdrücke 229

7.7 Arithmetische Operatoren 230

7.7.1 Der Multiplikationsoperator 230

7.7.2 Der Divisionsoperator 231

7.7.3 Der Restoperator 233

7.7.4 Der Additionsoperator 234

7.7.5 Der Subtraktionsoperator 236

7.8 Verschiebeoperatoren 239

7.9 Relationale Operatoren und Operatoren für

die Typüberprüfung 241

7.9.1 Integer-Vergleichsoperatoren 242

7.9.2 Fließkomma-Vergleichsoperatoren 242

7.9.3 Dezimale Vergleichsoperatoren 243

7.9.4 Boolesche Gleichheitsoperatoren 243

7.9.5 Aufzählungs-Vergleichsoperatoren 244

7.9.6 Verweistyp-Gleichheitsoperatoren 244

7.9.7 String-Gleichheitsoperatoren 246

7.9.8 Delegate-Gleichheitsoperatoren 246

7.9.9 Der Operator is 247

7.9.10 Der Operator as 248

7.10 Logische Operatoren 248

7.10.1 Logische Operatoren für Integer-Typen 249

7.10.2 Logische Operatoren für Aufzählungen 249

7.10.3 Boolesche logische Operatoren 250

(7)

7.11 Logische Bedingungsoperatoren 250

7.11.1 Boolesche logische Bedingungsoperatoren 251 7.11.2 Benutzerdefinierte logische Bedingungsoperatoren 251

7.12 Der Bedingungsoperator 252

7.13 Zuweisungsoperatoren 253

7.13.1 Einfache Zuweisung 254

7.13.2 Zusammengesetzte Zuweisung 256

7.13.3 Ereigniszuweisung 257

7.14 Ausdrücke 258

7.15 Konstante Ausdrücke 258

7.16 Boolesche Ausdrücke 259

8 Anweisungen 261

8.1 Endpunkte und Erreichbarkeit 262

8.2 Blöcke 264

8.2.1 Anweisungslisten 265

8.3 Die leere Anweisung 265

8.4 Benannte Anweisungen 266

8.5 Deklarationsanweisungen 267

8.5.1 Deklaration lokaler Variablen 267

8.5.2 Deklaration lokaler Konstanten 268

8.6 Ausdrucksanweisungen 269

8.7 Auswahlanweisungen 269

8.7.1 Die Anweisung if 270

8.7.2 Die Anweisung switch 271

8.8 Iterationsanweisungen 275

8.8.1 Die Anweisung while 275

8.8.2 Die Anweisung do 276

8.8.3 Die Anweisung for 277

8.8.4 Die Anweisung foreach 279

8.9 Sprunganweisungen 281

8.9.1 Die Anweisung break 282

8.9.2 Die Anweisung continue 283

8.9.3 Die Anweisung goto 284

8.9.4 Die Anweisung return 285

8.9.5 Die Anweisung throw 286

8.10 Die Anweisung try 287

8.11 Die Anweisungen checked und unchecked 291

8.12 Die Anweisung lock 292

8.13 Die Anweisung using 293

(8)

9 Namespaces 297

9.1 Kompilierungseinheiten 297

9.2 Namespace-Deklarationen 298

9.3 using-Direktiven 300

9.3.1 Alias-using-Direktiven 300

9.3.2 Namespace-using-Direktiven 303

9.4 Namespace-Member 305

9.5 Typdeklarationen 306

10 Klassen 307

10.1 Klassendeklarationen 307

10.1.1 Klassenmodifizierer 307

10.1.2 Basisspezifikation 309

10.1.3 Der Klassenrumpf 311

10.2 Klassenmember 311

10.2.1 Vererbung 313

10.2.2 Der Modifizierer new 314

10.2.3 Zugriffsmodifizierer 314

10.2.4 Konstituierende Typen 315

10.2.5 Statische und Instanzmember 315

10.2.6 Verschachtelte Typen 316

10.2.7 Reservierte Membernamen 320

10.3 Konstanten 322

10.4 Felder 325

10.4.1 Statische und Instanzenfelder 326

10.4.2 Schreibgeschützte Felder 327

10.4.3 Flüchtige Felder 328

10.4.4 Initialisierung von Feldern 330

10.4.5 Variableninitialisierer 330

10.5 Methoden 334

10.5.1 Methodenparameter 336

10.5.2 Statische und Instanzmethoden 343

10.5.3 Virtuelle Methoden 344

10.5.4 Überschriebene Methoden 346

10.5.5 Versiegelte Methoden 348

10.5.6 Abstrakte Methoden 349

10.5.7 Externe Methoden 351

10.5.8 Der Methodenrumpf 352

10.5.9 Überladen von Methoden 352

10.6 Eigenschaften 353

10.6.1 Statische und Instanzeigenschaften 354

10.6.2 Zugriffsmethoden 355

10.6.3 Virtuelle, versiegelte, überschriebene und

abstrakte Zugriffsmethoden 361

(9)

10.7 Ereignisse 363

10.7.1 Feldähnliche Ereignisse 365

10.7.2 Ereignis-Zugriffsmethoden 367

10.7.3 Statische und Instanzereignisse 369

10.7.4 Virtuelle, versiegelte, überschriebene und

abstrakte Zugriffsmethoden 369

10.8 Indexer 370

10.8.1 Überladen von Indexern 375

10.9 Operatoren 375

10.9.1 Unäre Operatoren 376

10.9.2 Binäre Operatoren 378

10.9.3 Konvertierungsoperatoren 378

10.10 Instanzkonstruktoren 380

10.10.1 Konstruktorinitialisierer 381

10.10.2 Initialisierer für Instanzvariablen 382

10.10.3 Die Ausführung von Konstruktoren 383

10.10.4 Standardkonstruktoren 385

10.10.5 Private Konstruktoren 385

10.10.6 Optionale Parameter für Instanzkonstruktoren 386

10.11 Statische Konstruktoren 386

10.12 Destruktoren 389

11 Strukturen 393

11.1 Strukturdeklarationen 394

11.1.1 Strukturmodifizierer 394

11.1.2 Struktur-Interfaces 394

11.1.3 Strukturrumpf 395

11.2 Strukturmember 395

11.3 Unterschiede zwischen Klassen und Strukturen 395

11.3.1 Wertesemantik 396

11.3.2 Vererbung 397

11.3.3 Zuweisung 397

11.3.4 Standardwerte 397

11.3.5 Boxing und Unboxing 398

11.3.6 Die Bedeutung von this 399

11.3.7 Feldinitialisierer 399

11.3.8 Konstruktoren 399

11.3.9 Destruktoren 400

11.4 Beispiele für Strukturen 400

11.4.1 Der Integer-Datenbanktyp 401

11.4.2 Der boolesche Datenbanktyp 403

(10)

12 Arrays 405

12.1 Array-Typen 406

12.1.1 Der Typ System.Array 407

12.2 Erstellen von Arrays 407

12.3 Zugriff auf Array-Elemente 407

12.4 Array-Member 407

12.5 Kovarianz von Arrays 408

12.6 Array-Initialisierer 409

13 Interfaces 411

13.1 Interface-Deklarationen 411

13.1.1 Interface-Modifizierer 412

13.1.2 Basis-Interfaces 412

13.1.3 Interface-Rumpf 413

13.2 Interface-Member 413

13.2.1 Interface-Methoden 415

13.2.2 Interface-Eigenschaften 415

13.2.3 Interface-Ereignisse 415

13.2.4 Interface-Indexer 416

13.2.5 Zugriff auf Interface-Member 416

13.3 Vollständig qualifizierte Namen von Interface-Membern 418

13.4 Interface-Implementierungen 419

13.4.1 Explizite Implementierung von Interface-Membern 420

13.4.2 Interface-Zuordnung 422

13.4.3 Vererbung der Interface-Implementierung 426

13.4.4 Reimplementierung von Interfaces 427

13.4.5 Abstrakte Klassen und Interfaces 429

14 Aufzählungen 431

14.1 Aufzählungsdeklarationen 431

14.2 Aufzählungsmodifizierer 432

14.3 Aufzählungsmember 433

14.4 Der Typ System.Enum 435

14.5 Werte und Operationen von Aufzählungen 436

15 Delegates 437

15.1 Delegate-Deklarationen 438

15.2 Instanzierung von Delegates 440

15.3 Aufrufen von Delegates 441

(11)

16 Exceptions (Ausnahmen) 445

16.1 Gründe für Exceptions 445

16.2 Die Klasse System.Exception 446

16.3 Handhabung von Exceptions 446

16.4 Gebräuchliche Exceptionklassen 447

17 Attribute 449

17.1 Attributklassen 449

17.1.1 Attributverwendung 450

17.1.2 Positionale und benannte Parameter 451

17.1.3 Typen der Attributparameter 452

17.2 Attributspezifikation 452

17.3 Attributinstanzen 458

17.3.1 Kompilieren eines Attributs 458

17.3.2 Abruf einer Attributinstanz zur Laufzeit 459

17.4 Reservierte Attribute 459

17.4.1 Das Attribut AttributeUsage 460

17.4.2 Das Attribut Conditional 460

17.4.3 Das Attribut Obsolete 463

17.5 Attribute für die Interoperabilität 465

17.5.1 Interoperabilität mit COM- und Win32-Komponenten 465 17.5.2 Interoperabilität mit anderen .NET-Sprachen 465

18 Unsicherer Code 467

18.1 Unsicherer Kontext 468

18.2 Zeigertypen 471

18.3 Feste und bewegliche Variablen 474

18.4 Zeigerkonvertierung 475

18.5 Zeiger in Ausdrücken 477

18.5.1 Zeigerindirektion 477

18.5.2 Zeigermemberzugriff 478

18.5.3 Zeigerelementzugriff 479

18.5.4 Der Operator address-of 480

18.5.5 Zeigerinkrement und -dekrement 481

18.5.6 Zeigerarithmetik 481

18.5.7 Zeigervergleiche 482

18.5.8 Der Operator sizeof 483

18.6 Die Anweisung fixed 484

18.7 Stack-Zuweisung 488

18.8 Dynamische Speicherzuweisung 489

(12)

Teil II C# 2.0 493

19 Einführung in C# 2.0 495

19.1 Generics 496

19.1.1 Wozu Generics? 496

19.1.2 Erstellen und Verwenden von Generics 497

19.1.3 Instanziieren generischer Typen 499

19.1.4 Einschränkungen 499

19.1.5 Generische Methoden 502

19.2 Anonyme Methoden 503

19.2.1 Konvertierung von Methodengruppen 506

19.3 Iteratoren 506

19.4 Partielle Typen 511

19.5 Nullable Types 512

20 Generics 517

20.1 Deklaration generischer Klassen 517

20.1.1 Typparameter 518

20.1.2 Der Instanztyp 520

20.1.3 Die Basisspezifikation 520

20.1.4 Member generischer Klassen 521

20.1.5 Statische Felder in generischen Klassen 522 20.1.6 Statische Konstruktoren in generischen Klassen 523 20.1.7 Zugriff auf geschützte (protected) Member 523

20.1.8 Überladen in generischen Klassen 524

20.1.9 Parameter-Array-Methoden und Typparameter 525

20.1.10 Überschreiben in generischen Klassen 525

20.1.11 Operatoren in generischen Klassen 526

20.1.12 Verschachtelte Typen in generischen Klassen 528

20.1.13 Der Eintrittspunkt einer Anwendung 528

20.2 Deklaration generischer Strukturen 529 20.3 Deklaration generischer Interfaces 529

20.3.1 Eindeutigkeit implementierter Interfaces 529 20.3.2 Explizite Implementierung von Interface-Membern 531

20.4 Deklaration generischer Delegates 531

20.5 Konstruierte Typen 532

20.5.1 Typargumente 533

20.5.2 Offene und geschlossene Typen 534

20.5.3 Basisklassen und -Interfaces eines konstruierten Typs 534

20.5.4 Member eines konstruierten Typs 535

20.5.5 Zugriff auf einen konstruierten Typ 536

20.5.6 Konvertierungen 536

(13)

20.5.7 Aliase 537

20.5.8 Attribute 538

20.5.9 Arrays und das generische Interface IList 538

20.6 Generische Methoden 539

20.6.1 Signaturen generischer Methoden 540

20.6.2 Virtuelle generische Methoden 541

20.6.3 Aufrufen generischer Methoden 543

20.6.4 Typ-Inferenz von Typargumenten 543

20.6.5 Syntaktische Mehrdeutigkeiten 545

20.6.6 Verwenden einer generischen Methode durch

einen Delegate 547

20.6.7 Keine generischen Eigenschaften, Ereignisse,

Indexer und Operatoren 547

20.7 Einschränkungen (Constraints) 548

20.7.1 Erfüllen der Einschränkungen 553

20.7.2 Membersuche in Typparametern 555

20.7.3 Typparameter und Boxing 556

20.7.4 Konvertierungen im Zusammenhang mit Typparametern 557

20.8 Ausdrücke und Anweisungen 559

20.8.1 Ausdrücke für die Objekterstellung 559

20.8.2 Der typeof-Operator 560

20.8.3 Gleichheitsoperatoren 562

20.8.4 Der is-Operator 562

20.8.5 Der as-Operator 563

20.8.6 Ausnahmeanweisungen 563

20.8.7 Die lock-Anweisung 563

20.8.8 Die using-Anweisung 563

20.8.9 Die foreach-Anweisung 564

20.9 Überarbeitete Regeln für die Membersuche 564

20.9.1 Namespace- und Typnamen 564

20.9.2 Membersuche 567

20.9.3 Anwendbares Funktionsmember 569

20.9.4 Besseres Funktionsmember 570

20.9.5 Einfache Bezeichner 571

20.9.6 Memberzugriff 573

20.9.7 Methodenaufrufe 575

20.10 Änderungen in der Grammatik für die Rechtsverschiebung 577

21 Anonyme Methoden 579

21.1 Ausdrücke mit anonymen Methoden 579

21.2 Signaturen anonymer Methoden 580

21.3 Konvertierung anonymer Methoden 580

21.4 Blöcke anonymer Methoden 582

(14)

21.5 Äußere Variablen 583

21.5.1 »Einfangen« (Capturing) äußerer Variablen 583

21.5.2 Instanziierung lokaler Variablen 584

21.6 Auswertung anonymer Methoden 587

21.7 Die Gleichheit von Delegate-Instanzen 588

21.8 Eindeutige Zuweisung 588

21.9 Konvertierung von Methodengruppen 589

21.10 Ausdrücke zur Delegate-Erstellung 591

21.11 Implementierungsbeispiel 591

22 Iteratoren 595

22.1 Iteratorblöcke 595

22.1.1 Enumerator-Interfaces 596

22.1.2 Enumerable-Interfaces 596

22.1.3 Der Yield-Typ 596

22.1.4 this-Zugriff 596

22.2 Enumerator-Objekte 597

22.2.1 Die Methode MoveNext 597

22.2.2 Die Eigenschaft Current 599

22.2.3 Die Methode Dispose 599

22.3 Enumerable-Objekte 600

22.3.1 Die Methode GetEnumerator 601

22.4 Die yield-Anweisung 601

22.4.1 Eindeutige Zuweisung 603

22.5 Implementierungsbeispiel 603

23 Partielle Typen 611

23.1 Partielle Deklarationen 611

23.1.1 Attribute 612

23.1.2 Modifizierer 612

23.1.3 Typparameter und Einschränkungen 613

23.1.4 Die Basisklasse 614

23.1.5 Basis-Interfaces 614

23.1.6 Member 614

23.2 Namensbindung 615

24 Nullable Types 617

24.1 Nullable Types 617

24.1.1 Member 618

24.1.2 Standardwert 618

24.1.3 Die Wertetypeinschränkung 618

(15)

24.2 Konvertierungen 619

24.2.1 Konvertierung des null-Literals 619

24.2.2 Konvertierungen von Nullable Types 619

24.2.3 Boxing und Unboxing 620

24.2.4 Erlaubte benutzerdefinierte Konvertierungen 621 24.2.5 Auswertung benutzerdefinierter Konvertierungen 622

24.2.6 Erweiterte Konvertierungen 622

24.2.7 Benutzerdefinierte implizite Konvertierungen 623 24.2.8 Benutzerdefinierte explizite Konvertierungen 624

24.3 Ausdrücke 626

24.3.1 Erweiterte Operatoren 626

24.3.2 Erlaubte benutzerdefinierte Operatoren 627

24.3.3 Auflösung der Operatorüberladung 628

24.3.4 Gleichheitsoperatoren und null 628

24.3.5 Der is-Operator 628

24.3.6 Der as-Operator 629

24.3.7 Zusammengesetzte Operatoren 630

24.3.8 Der Typ bool? 630

24.3.9 Der Koaleszenzoperator (??) 630

25 Weitere Features 633

25.1 Sichtbarkeit von Eigenschaftsaccessoren 633

25.1.1 Deklaration von Eigenschaftsaccessoren 633

25.1.2 Verwenden von Eigenschaftsaccessoren 634

25.1.3 Überschreiben und Interface-Implementierung 636

25.2 Statische Klassen 636

25.2.1 Deklaration statischer Klassen 637

25.2.2 Verweise auf Typen statischer Klassen 638

25.3 Qualifizierer für Namespace-Aliase 638

25.3.1 Qualifizierte Alias-Member 641

25.3.2 Eindeutigkeit von Aliasen 642

25.4 Extern-Aliase 643

25.4.1 Alias-extern-Direktiven 646

25.5 Pragma-Direktiven 647

25.5.1 Pragma Warning 648

25.6 Standardwertausdruck 649

25.7 Conditional-Attributklassen 649

25.8 Puffer fester Größe 650

25.8.1 Deklaration von Puffern fester Größe 650

25.8.2 Puffer fester Größe in Ausdrücken 652

25.8.3 Die fixed-Anweisung 653

25.8.4 Überprüfung der eindeutigen Zuweisung 654

(16)

Teil III Anhänge 655

A Dokumentationskommentare 657

A.1 Einführung 658

A.2 Empfohlene Tags 659

A.2.1 <c> 660

A.2.2 <code> 661

A.2.3 <example> 661

A.2.4 <exception> 661

A.2.5 <include> 662

A.2.6 <list> 663

A.2.7 <para> 664

A.2.8 <param> 665

A.2.9 <paramref> 665

A.2.10 <permission> 665

A.2.11 <remarks> 666

A.2.12 <returns> 666

A.2.13 <see> 667

A.2.14 <seealso> 667

A.2.15 <summary> 668

A.2.16 <value> 668

A.2.17 <typeparam> 669

A.2.18 <typeparamref> 669

A.3 Verarbeiten der Dokumentationsdatei 669

A.3.1 Format der ID-Strings 670

A.3.2 Beispiele für ID-Strings 671

A.4 Ein Beispiel 675

A.4.1 Der C#-Quellcode 675

A.4.2 Die XML-Ausgabe 678

B Grammatik 681

B.1 Lexikalische Grammatik 681

B.1.1 Zeilenendezeichen 682

B.1.2 Kommentare 682

B.1.3 Leerraum 683

B.1.4 Textelemente 683

B.1.5 Escape-Sequenzen 683

B.1.6 Bezeichner 683

B.1.7 Schlüsselwörter 685

B.1.8 Literale 685

B.1.9 Operatoren und Trennzeichen 688

B.1.10 Präprozessor-Direktiven 688

(17)

B.2 Syntaktische Grammatik 692

B.2.1 Grundbegriffe 692

B.2.2 Typen 692

B.2.3 Variablen 694

B.2.4 Ausdrücke 694

B.2.5 Anweisungen 700

B.2.6 Namespaces 704

B.2.7 Klassen 706

B.2.8 Strukturen 714

B.2.9 Arrays 716

B.2.10 Interfaces 716

B.2.11 Aufzählungen 718

B.2.12 Delegates 718

B.2.13 Attribute 719

B.3 Erweiterungen für unsicheren Code 720

Stichwortverzeichnis 725

Referenzen

ÄHNLICHE DOKUMENTE

StLnäix xrösstes 1-axer in: I^anäwirtsLkattlieken ^aseki- nen unä Qersten, Kratt- unä ^Verk^eugmasekinen, ^Verk^euxen aller &gt;Vrt, Laumaterialien, Lisen» Ltalil, LIeclien,

It is now not difficult to derive a differential equation for the deviation

The occurence of a related protein in the EDTA cell wall extract of the diatom N.pelliculosa indicates that these proteins are general components of diatom cell walls and

• Ansprechen, nach Unfallhergang und Schmerzen fragen Überwachung der Vitalfunktionen (Werte sind normal). • den verletzten

Der Rückgang der Ausgaben resultiert fast ausschließlich aus einem Besucherrückgang in Höhe von 32 Prozent. Die Durchschnittsausgaben der rund 8,4 Milliarden Gäste im

[r]

2 Im Frühling platzen die Knospen auf und langsam breiten sich die ersten hellgrünen Blätter aus.. 3 Im Mai beginnt der Kastanienbaum

Zeile: (7+1–4)·6=24 Finde zu möglichst vielen Kombinationen mindestens eine Lösung und