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

Inhaltsverzeichnis
Vorwort zur 5. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Weitere .NET-Datentypen
7 Weitere Möglichkeiten von C#
8 Auflistungsklassen (Collections)
9 Fehlerbehandlung und Debugging
10 LINQ to Objects
11 Multithreading und die Task Parallel Library (TPL)
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 Einige wichtige .NET-Klassen
15 Projektmanagement und Visual Studio 2010
16 XML
17 WPF – Die Grundlagen
18 WPF-Containerelemente
19 WPF-Steuerelemente
20 Konzepte der WPF
21 Datenbindung
22 2D-Grafik
23 ADO.NET – verbindungsorientierte Objekte
24 ADO.NET – Das Command-Objekt
25 ADO.NET – Der SqlDataAdapter
26 ADO.NET – Daten im lokalen Speicher
27 ADO.NET – Aktualisieren der Datenbank
28 Stark typisierte DataSets
29 LINQ to SQL
30 Weitergabe von Anwendungen
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2010 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2010

Visual C# 2010
geb., mit DVD
1295 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1552-7
Pfeil 3 Klassendesign
Pfeil 3.1 Einführung in die Objektorientierung
Pfeil 3.1.1 Vorteile der objektorientierten Programmierung
Pfeil 3.2 Klassendefinition
Pfeil 3.2.1 Klassen in Visual Studio anlegen
Pfeil 3.2.2 Das Projekt »GeometricObjectsSolution«
Pfeil 3.2.3 Deklaration von Objektvariablen
Pfeil 3.2.4 Zugriffsmodifizierer einer Klasse
Pfeil 3.2.5 Splitten einer Klassendefinition mit »partial«
Pfeil 3.3 Arbeiten mit Objektreferenzen
Pfeil 3.3.1 Prüfen auf Initialisierung
Pfeil 3.3.2 Ein Objekt freigeben
Pfeil 3.3.3 Mehrere Referenzen auf ein Objekt
Pfeil 3.4 Referenz- und Wertetypen
Pfeil 3.5 Eigenschaften eines Objekts
Pfeil 3.5.1 Öffentliche Felder
Pfeil 3.5.2 Datenkapselung mit Eigenschaftsmethoden sicherstellen
Pfeil 3.5.3 Ergänzung der Klasse »Circle«
Pfeil 3.5.4 Lese- und schreibgeschützte Eigenschaften
Pfeil 3.5.5 Sichtbarkeit der Accessoren »get« und »set«
Pfeil 3.5.6 Unterstützung von Visual Studio 2010
Pfeil 3.5.7 Automatisch implementierte Eigenschaften
Pfeil 3.5.8 Vereinfachte Objektinstanziierung mit Objektinitialisierern
Pfeil 3.6 Methoden eines Objekts
Pfeil 3.6.1 Methoden mit Rückgabewert
Pfeil 3.6.2 Methoden ohne Rückgabewert
Pfeil 3.6.3 Methoden mit Parameterliste
Pfeil 3.6.4 Methodenüberladung
Pfeil 3.6.5 Variablen innerhalb einer Methode (Lokale Variablen)
Pfeil 3.6.6 Referenz- und Wertparameter
Pfeil 3.6.7 Zugriff auf private Daten
Pfeil 3.6.8 Namenskonflikte mit »this« lösen
Pfeil 3.6.9 Trennung von Daten und Code im Speicher
Pfeil 3.6.10 Methode oder Eigenschaft?
Pfeil 3.6.11 Methoden und Eigenschaften umbenennen
Pfeil 3.7 Konstruktoren
Pfeil 3.7.1 Konstruktoren bereitstellen
Pfeil 3.7.2 Parametrisierte Konstruktoren und die Objektinitialisierung
Pfeil 3.7.3 Konstruktoraufrufe
Pfeil 3.7.4 Definition von Konstruktoren
Pfeil 3.7.5 »internal«-Konstruktoren
Pfeil 3.7.6 »private«-Konstruktoren
Pfeil 3.7.7 Konstruktorenaufrufe umleiten
Pfeil 3.8 Der Destruktor
Pfeil 3.9 Konstanten in einer Klasse
Pfeil 3.9.1 Konstanten mit dem Schlüsselwort »const«
Pfeil 3.9.2 Schreibgeschützte Felder mit »readonly«
Pfeil 3.10 Statische Klassenkomponenten
Pfeil 3.10.1 Begrifflichkeiten
Pfeil 3.10.2 Statische Klassenvariable in der Klasse »Circle«
Pfeil 3.10.3 Klassenspezifische Methoden
Pfeil 3.10.4 Statische Konstruktoren (Klasseninitialisierer)
Pfeil 3.10.5 Statische Klassen
Pfeil 3.10.6 Stand der Klasse »Circle«


Galileo Computing - Zum Seitenanfang

3.3 Arbeiten mit Objektreferenzen Zur nächsten ÜberschriftZur vorigen Überschrift


Galileo Computing - Zum Seitenanfang

3.3.1 Prüfen auf Initialisierung Zur nächsten ÜberschriftZur vorigen Überschrift

Mit


Circle kreis;

wird eine Objektvariable zwar deklariert, sie ist aber noch nicht initialisiert und hat auch nicht den Zustand null. Sehen wir uns nun an, was passiert, wenn wir eine Objektvariable deklarieren und anschließend ohne vorhergehende Initialisierung auf null testen.


class Program {
  static void Main(string[] args) {
    Circle kreis;
    if (kreis == null) {
      // die Variable kreis referenziert kein Objekt
      Console.WriteLine("Das Objekt existiert nicht!");
      kreis = new Circle();
    }
    else
      // kreis ist eine gültige Objektreferenz
      Console.WriteLine("Das Objekt existiert");
    // weitere Anweisungen
    Console.ReadLine();
  }
}

Der C#-Compiler ist intelligent genug, um zu erkennen, dass die Objektreferenz kreis vor der Prüfung im if-Statement zu keinem Zeitpunkt initialisiert worden ist, und bricht die Kompilierung mit einer Fehlermeldung ab.

Verwechseln Sie null nicht mit der Zahl 0. null gibt an, dass eine Variable zwar initialisiert ist, aber kein konkretes Objekt referenziert. Das wäre beispielsweise nach der Deklaration mit


Circle kreis = null;

oder


Circle kreis = new Circle();

der Fall. Eine Referenz kann nur benutzt werden, wenn sie auf ein konkretes Objekt verweist oder den Wert null hat.

Wenn Sie sich über den Zustand der Variablen im Unklaren sind, muss dieser, wie im folgenden Codefragment gezeigt, überprüft werden:


if(kreis == null) 
  // die Variable obj referenziert kein konkretes Objekt
else
  // obj ist ein gültiges Objekt

Ebenso gut können Sie auch mit


if(kreis != null) ...

prüfen, ob kreis ein gültiger Objektverweis ist. Liefert diese Bedingung true, kann eine Methode des Objekts aufgerufen oder eine Eigenschaft ausgewertet werden, ohne einen Laufzeitfehler zu riskieren.


Galileo Computing - Zum Seitenanfang

3.3.2 Ein Objekt freigeben Zur nächsten ÜberschriftZur vorigen Überschrift

Objekte beanspruchen den Speicher. Sie sollten daher ein Objekt freigeben, wenn Sie es nicht mehr benötigen. Dazu weisen Sie der Objektvariablen null zu, wie im folgenden Codefragment zu sehen ist:


Circle kreis = new Circle();
...
kreis = null;

Nun steht Ihnen das Objekt kreis nicht mehr zur Verfügung. Allerdings ist die Annahme falsch, dass das Objekt nun auch im Speicher gelöscht ist. Tatsächlich existiert es dort weiter, Sie können es nur nicht mehr aus dem Code heraus ansprechen. Zu einem späteren Zeitpunkt wird ein Mechanismus, die Garbage Collection, alle nicht mehr referenzierten Objekte im Speicher erfassen und deren beanspruchten Speicherplatz wieder freigeben. So wird es auch dem Objekt kreis ergehen. Auf die Garbage Collection kommen wir in Kapitel 4, »Vererbung, Polymorphie und Interfaces«, noch detailliert zu sprechen.


Galileo Computing - Zum Seitenanfang

3.3.3 Mehrere Referenzen auf ein Objekt topZur vorigen Überschrift

Es kommt immer wieder vor, dass mehrere Referenzen auf dasselbe Objekt zeigen. Betrachten Sie dazu das folgende Codefragment:


Circle kreis1 = new Circle();
Circle kreis2 = kreis1;

Zuerst wird die Variable kreis1 vom Typ Circle deklariert und initialisiert. Anschließend wird kreis1 der Variablen kreis2 zugewiesen. Trotz zweier namentlich unterschiedlicher Referenzen liegt nur ein konkretes Objekt vor, das sowohl über kreis1 als auch über kreis2 angesprochen werden kann.

Wenn Sie einem Feld über eine der beiden Referenzen einen Wert zuweisen, beispielsweise mit


kreis1.Radius = 10

können Sie mit der zweiten Objektreferenz den Inhalt der Eigenschaft auswerten:


Console.WriteLine(kreis2.Radius)

An der Konsole wird »10« angezeigt, da die Referenz kreis2 auf dasselbe Objekt zeigt wie die Referenz kreis1. Wird ein Objekt mehrfach referenziert, spielt es demnach keine Rolle, über welche Referenz der Eigenschaft ein Wert zugewiesen bzw. ein Feld ausgelesen wird – die Operation wird auf demselben Objekt ausgeführt.

Eine mehrfache Referenzierung hat noch weitere Konsequenzen: Geben Sie eine der Referenzen mit null frei, können Sie über die zweite Referenz das Objekt immer noch ansprechen, zum Beispiel:


Circle kreis1 = new Circle();
Circle kreis2;
kreis2 = kreis1;
kreis2.Radius = 20;
kreis2 = null;
Console.WriteLine(kreis1.Radius);

An der Konsole wird immer noch der Inhalt der Eigenschaft Radius ausgegeben. Erst mit der Freigabe der letzten gültigen Referenz auf ein Objekt wird dieses tatsächlich unwiederbringlich freigegeben.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2010

Visual C# 2010
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2010
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