Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 9 Generics – Generische Datentypen
Pfeil 9.1 Problembeschreibung
Pfeil 9.2 Bereitstellen einer generischen Klasse
Pfeil 9.2.1 Mehrere generische Typparameter
Pfeil 9.2.2 Vorteile der Generics
Pfeil 9.3 Bedingungen (Constraints) festlegen
Pfeil 9.3.1 Constraints mit der »where«-Klausel
Pfeil 9.3.2 Typparameter auf Klassen oder Strukturen beschränken
Pfeil 9.3.3 Mehrere Constraints definieren
Pfeil 9.3.4 Der Konstruktor-Constraint »new()«
Pfeil 9.3.5 Das Schlüsselwort »default«
Pfeil 9.4 Generische Methoden
Pfeil 9.4.1 Methoden und Constraints
Pfeil 9.5 Generics und Vererbung
Pfeil 9.5.1 Virtuelle generische Methoden
Pfeil 9.6 Konvertierung von Generics
Pfeil 9.7 Generische Delegates
Pfeil 9.7.1 Generische Delegates und Constraints
Pfeil 9.7.2 Anpassung des Beispiels »GeometricObjects«
Pfeil 9.8 Nullable-Typen
Pfeil 9.8.1 Konvertierungen mit Nullable-Typen
Pfeil 9.9 Generische Collections
Pfeil 9.9.1 Die Interfaces der generischen Auflistungsklassen
Pfeil 9.9.2 Die generische Auflistungsklasse »List<T>«
Pfeil 9.9.3 Vergleiche mit Hilfe des Delegaten »Comparison<T>«
Pfeil 9.10 Kovarianz und Kontravarianz generischer Typen
Pfeil 9.10.1 Kovarianz mit Interfaces
Pfeil 9.10.2 Kontravarianz mit Interfaces
Pfeil 9.10.3 Zusammenfassung
Pfeil 9.10.4 Generische Delegaten mit varianten Typparametern

Rheinwerk Computing - Zum Seitenanfang

9.8 Nullable-TypenZur nächsten Überschrift

Angenommen, Sie greifen auf das Feld einer Tabelle in einer Datenbank zu. Der Datentyp des Feldes sei ein Integer. Damit ist der zulässige Wertebereich des Feldes bereits exakt beschrieben, der zwischen dem Minimal- und dem Maximalwert des Integers liegt. Spalten einer Datenbanktabelle müssen aber nicht zwangsläufig mit einem durch den Datentyp beschriebenen Wert gefüllt sein, sie dürfen auch leer bleiben (haben also den Inhalt NULL) und werden trotzdem als gültig anerkannt. In diesem Fall ist neben einem Zahlenwert auch null akzeptiert. Das steht aber im Gegensatz zu der Vorgabe, dass ein Integer-Wert nicht durch null beschrieben werden kann.

Probleme dieser Art können nun ganz einfach durch Nullable-Typen gelöst werden. Dabei spielt der Typ Nullable<T>, der im Namespace System definiert ist, die entscheidende Rolle. Die Signatur deutet bereits an, dass es sich um eine generische Klasse handelt mit dem Ziel, einem Wertetyp die Verwendung von null zu ermöglichen. Die Definition lautet wie folgt:

public struct Nullable<T> where T : struct

Nullable<T> ist also als Struktur definiert und schränkt die Verwendung auf Strukturen ein. Das ist auch sinnvoll, da Referenztypen grundsätzlich durch null beschrieben werden können. Nullable<T> kann beispielsweise wie folgt verwendet werden:

Nullable<int> x = 4711;
Nullable<int> y = null;

C# verfügt darüber hinaus auch über eine eigene syntaktische Variante, die die Verwendung einfacher macht. Dafür wurde der neue Modifizierer »?« eingeführt, der aus einem Datentyp einen null-fähigen Typ macht. Damit kann die Notation der beiden Anweisungen auch vereinfachend wie folgt lauten:

int? x = 4711;
int? y = null;

Da wir es jetzt mit einem neuen Datentyp zu tun haben, der auch null unterstützt, wird in der Klasse Nullable mit HasValues eine Eigenschaft angeboten, die einen booleschen Wert beschreibt. Er ist true, wenn der Inhalt der null-fähigen Variablen einen gültigen Wert aufweist, also ungleich null ist.

if (x.HasValue)
Console.WriteLine("Der Wert ist ungleich null");
else
Console.WriteLine("Der Wert ist null");

Der Inhalt der Variablen kann mit der Eigenschaft Value abgefragt werden. Sie liefert einen gültigen Wert, wenn HasValue den Wert true liefert. Ansonsten wird eine Ausnahme vom Typ InvalidOperationException ausgelöst.

Darüber hinaus können Sie Nullable-Typen auch in der üblichen Form eines Referenztyps verwenden und beispielsweise mit null vergleichen:

if(x != null) {
...
}

Rheinwerk Computing - Zum Seitenanfang

9.8.1 Konvertierungen mit Nullable-TypenZur vorigen Überschrift

Ein Nullable-Typ ist gegenüber seinem zugrunde liegenden Datentyp um die Fähigkeit erweitert worden, auch null zu unterstützen. Eine Zuweisung wie im folgenden Codefragment kommt einer aufweitenden Operation gleich und wird daher implizit vorgenommen.

int x = 20;
int? y = x;

Soll im umgekehrten Fall die Zuweisung eines null-fähigen Typs an seinen elementaren Typ erfolgen, muss explizit konvertiert werden.

int? x = 20;
int y = (int)x;

Hat x in diesem Beispiel den Inhalt null, wird eine Ausnahme ausgelöst.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual C# 2012

Visual C# 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: C/C++






 C/C++


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern