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 7 Weitere Möglichkeiten von C#
Pfeil 7.1 Namensräume (Namespaces)
Pfeil 7.1.1 Zugriff auf Namespaces
Pfeil 7.1.2 Die »using«-Direktive
Pfeil 7.1.3 Globaler Namespace
Pfeil 7.1.4 Vermeiden von Mehrdeutigkeiten
Pfeil 7.1.5 Namespaces festlegen
Pfeil 7.1.6 Der ::-Operator
Pfeil 7.2 Generics – generische Datentypen
Pfeil 7.2.1 Lösung mit einer generischen Klasse
Pfeil 7.2.2 Typparameter mit Constraints einschränken
Pfeil 7.2.3 Generische Methoden
Pfeil 7.2.4 Generics und Vererbung
Pfeil 7.2.5 Konvertierung von Generics
Pfeil 7.2.6 Generische Delegates
Pfeil 7.2.7 Generische Klassen in der .NET-Klassenbibliothek
Pfeil 7.3 Operatorüberladung
Pfeil 7.3.1 Syntax der Operatorüberladung
Pfeil 7.3.2 Operatorüberladungen in »GeometricObjectsSolution«
Pfeil 7.3.3 »true«- und »false«-Operatoren
Pfeil 7.3.4 Benutzerdefinierte Konvertierungen
Pfeil 7.4 Indexer
Pfeil 7.4.1 Überladen von Indexern
Pfeil 7.4.2 Parameterbehaftete Eigenschaften
Pfeil 7.5 Erweiterungsmethoden
Pfeil 7.6 Implizit typisierte Variablen (Typinferenz)
Pfeil 7.7 Lambda-Ausdrücke
Pfeil 7.8 Anonyme Typen
Pfeil 7.9 Nullable-Typen
Pfeil 7.10 Attribute
Pfeil 7.10.1 Das »Flags«-Attribut
Pfeil 7.10.2 Anmerkungen zu den Attributen
Pfeil 7.10.3 Benutzerdefinierte Attribute
Pfeil 7.10.4 Attribute auswerten
Pfeil 7.10.5 Festlegen der Assembly-Eigenschaften
Pfeil 7.11 Partielle Methoden
Pfeil 7.12 Dynamisches Binden
Pfeil 7.12.1 Eine kurze Analyse
Pfeil 7.12.2 Dynamische Objekte
Pfeil 7.13 Unsicherer (unsafe) Programmcode – Zeigertechnik in C#
Pfeil 7.13.1 Einführung
Pfeil 7.13.2 Das Schlüsselwort »unsafe«
Pfeil 7.13.3 Deklaration von Zeigern
Pfeil 7.13.4 Die »fixed«-Anweisung
Pfeil 7.13.5 Zeigerarithmetik
Pfeil 7.13.6 Der Operator »->«


Galileo Computing - Zum Seitenanfang

7.11 Partielle Methoden topZur vorigen Überschrift

Partielle Klassen kennen Sie bereits, ich habe in Kapitel 3, »Das Klassendesign«, darüber geschrieben. Noch einmal zur Erinnerung: Eine Klasse kann mit dem in .NET 2.0 eingeführten Schlüsselwort partial auf zwei oder mehr Sourcecode-Dateien verteilt werden. Zur Kompilierzeit wird eine über mehrere Quellcodedateien aufgeteilte Klasse zu einer Definition »zusammengeschraubt«.

Seit dem .NET Framework 3.0 sind auch partielle Methoden möglich. Partielle Methoden stellen eine Option dar, die wahrgenommen werden kann. Das erinnert uns ein wenig an Ereignisse, auf deren Auslösung wir mit einem Ereignishandler reagieren können oder auch nicht. Tatsächlich sind sich Ereignisse und partielle Methoden sehr ähnlich. Doch ehe wir uns das im Detail ansehen, lassen Sie uns zuerst über die Bedingungen sprechen, die beim Einsatz partieller Methoden beachtet werden müssen:

  • Partielle Methoden können nur in einer partiellen Klasse definiert werden.
  • Der Rückgabetyp einer partiellen Methode ist grundsätzlich void.
  • Partielle Methoden dürfen keinen out-Parameter haben.
  • Eine partielle Methode darf keine Zugriffsmodifizierer haben; ebenso sind virtual, abstract, override, new und sealed unzulässig.

Nun wollen wir uns eine einfache Klasse ansehen, in der zwei partielle Methoden definiert sind.


// -------------------------------------------
// Beispiel: ...\Kapitel 7\PartielleMethoden
// -------------------------------------------
public partial class Person {
  // Felder
  private string _Name;
  public int Alter { get; set; }
  // partielle Methoden
  partial void ChangingName(string name);
  partial void ChangedName();    
  // Konstruktor
  public Person(string name, int alter) {
    Alter = alter;
    Name = name;
  }
  // Eigenschaft
  public string Name {
    get { return _Name; }
    set {
      if(_Name != null)
        ChangingName(_Name);
      _Name = value;
      ChangedName();
    }
  }
}

Die partiellen Methoden ChangingName und ChangedName werden aufgerufen, bevor sich der Wert der Eigenschaft Name ändert beziehungsweise nachdem sich der Wert geändert hat. Bleibt diese Klasse für sich alleine stehen und erfährt sie keine Erweiterung durch eine partielle Definition, wird der Compiler die partiellen Methoden nicht kompilieren und auch die Aufrufe der partiellen Methoden ignorieren.

Möglicherweise sind wir aber an einer Reaktion im Zusammenhang mit der Namensänderung interessiert. Vielleicht möchten wir diese protokollieren oder uns nur ganz einfach die Änderung anzeigen lassen. Das ist ganz einfach zu realisieren, indem wir die Klasse Person durch eine weitere partielle Definition erweitern.


public partial class Person {
  partial void ChangingName(string Name) {
    Console.WriteLine("Der alte name '{0}' wird geändert.", name);
  }
  partial void ChangedName() {
    Console.WriteLine("Name erfolgreich geändert.");
  }
}

Zum Testen der Klasse Person genügt uns ganz einfaches Coding:


static void Main(string[] args){
  Person pers = new Person("Fischer", 67);
  pers.Name = "Müller";
  Console.WriteLine(pers.Name);
  Console.ReadLine();
}

Die Ausgabe an der Konsole zeigt uns an, dass wir den Namen der Person verändert haben. Das ist nichts, was besonders aufregend wäre.

Partielle Methoden sind meistens dort anzutreffen, wo automatisch Code erzeugt und als Quellcode angeboten wird. Sie werden im weiteren Verlauf des Buches auf partielle Methoden im Zusammenhang mit LINQ to SQL stoßen. Wie schon angedeutet, sind sich Ereignisse und partielle Methoden sehr ähnlich. Während ein Ereignis immer außerhalb der eigentlichen Klassendefinition behandelt wird, ist eine partielle Methode eine optional angebotene Ergänzung des Quellcodes. Alle Objekte werden dann gleichermaßen davon profitieren, während hinsichtlich eines Ereignisses nur das Objekt von dem Ereignishandler profitiert, bei dem der Ereignishandler registriert ist.


Hinweis

Es ließe sich an dieser Stelle trefflich argumentieren, dass die Charakteristik der partiellen Methoden auch durch statische Ereignisse abgebildet werden kann. Dem ist allerdings entgegenzuhalten, dass statische Ereignisse klassengebunden sind und keinen Zugriff auf objektspezifische Daten haben.




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