funcry hat folgendes geschrieben : |
| Mir ist aufgefallen, dass fast in jedem Beispiel in der c# Hilfe, sowie auch im Netz fast vor jeder Methode Static steht. |
Das ist mir ganz und gar nicht aufgefallen. Im Gegenteil: Wenn ich mir "Alle Member" der Control-Klasse, der Basisklasse für alle Controls in WinForms, anschaue, gibt es nur einige wenige statische Member. Etwas anderes sind Klassen, die spezielle Methoden bereitstellen, wie File, Directory oder auch String, Array.
funcry hat folgendes geschrieben : |
| So wie ich die Hilfe gelesen habe ist dies überhaupt nicht erforderlich und geht zur Lasten der Performance. |
Zu "überhaupt nicht erforderlich" siehe die folgende Erklärung. Zur "Performance" hat static vermutlich keinerlei praktische Auswirkungen. Bei einer "normalen" public-Methode wird vorher eine Instanz der Klasse benötigt; bei einer statischen Methode wird intern so etwas wie eine virtuelle Instanz benötigt (irgendwo muss die Methode ja stehen und aktiviert werden). Das dürfte also keinen Unterschied ausmachen.
funcry hat folgendes geschrieben : |
| In einem speziellen Fall habe ich innerhalb einer Klasse eine weitere definiert, und diese mit static gekennzeichnet. Jetzt konnte ich auf die Methoden zugreifen, ohne dass ich die nested class vorher erzeugen musste. Das ist doch der einzige Sinn und Zweck von static, oder habe ich da etwas falsch verstenden / übersehen ? |
Sinn und Zweck von static sind Sachen, die sich auf die Klasse selbst beziehen und nicht auf eine bestimmte Instanz. Siehe die Erläuterungen in der
SDK-Doku/MSDN zum
static-Schlüsselwort, z.B. zu dem dort genannten Beispiel:
| Zitat: |
| ... eine Klasse, die einen Firmenangestellten repräsentiert. Nehmen Sie an, dass die Klasse eine Methode zum Zählen der Angestellten und ein Feld zum Speichern der Angestelltenzahl enthält. Weder die Methode noch das Feld sind Elemente einer Angestellteninstanz. Stattdessen gehören sie zur Klasse. Daher sollten sie als Member des Typs static der Klasse deklariert werden |
Ob die "nested class" oder ihre Eigenschaften oder ihre Methoden sinnvollerweise statisch sind oder nicht, hängt also vom Verwendungszweck ab.
Gruß Jürgen