Autor Beitrag
HaShLo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26


Flash,Visual Basic,
BeitragVerfasst: So 19.10.08 18:17 
Hallo Leute,

ich hab mal zwei Fragen an euch

erste Frage:

ich habe mal eine kurze Frage undzwar habe ich ein Programm mit C# geschrieben und da habe ich eine Zeile stehen, wo steht

x.ToString(); <-- ist dieses ToString() Methode eine statische Methode oder nicht statische Methode?

Wäre dankbar wenn ihr mir das mal kurz beantworten würdet, würde es gerne wissen und vielleicht noch mit Begründung damit ich das besser verstehen kann;)

und die zweite Frage:

Ich habe jetzt mehrere Klassen in mein Programm und für jede Klasse habe ich ein Konstruktor drin, ich würde gerne wissen was für Namen ich dem Konstruktor geben kann, gibst dort besondere Regel?

Danke schön schonmal

_________________
ProGrammer Of The FuTure......HaShLo BuRn
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 19.10.08 18:41 
Hallo,

zu ToString()
Sämtliche Klassen sind von System.Object abgeleitet. Dazu steht in der SDK-Doku/MSDN:
Zitat:
Da alle Klassen in .NET Framework von Object abgeleitet sind, steht jede in der Object-Klasse definierte Methode in allen Objekten im System zur Verfügung. Abgeleitete Klassen besitzen und nutzen die Möglichkeit, einige dieser Methoden zu überschreiben. Dazu gehören folgende Methoden:
Equals – Unterstützt Vergleiche zwischen Objekten.
Finalize – Führt vor der automatischen Freigabe eines Objekts Bereinigungsaktionen durch.
GetHashCode – Generiert zur Unterstützung einer Hashtabelle eine Zahl, die dem Wert des Objekts entspricht.
ToString – Stellt eine lesbare Zeichenfolge her, die eine Instanz der Klasse beschreibt.

Es geht also um die Beschreibung einer speziellen Instanz, nicht um die (statische) Beschreibung der Klasse.

zum Konstruktor
Wie kommst Du darauf, dass Du einem Konstruktor einen Namen vergeben kannst/darfst? Hast Du wirklich einen Code erstellt (den der Compiler akzeptiert), in dem Du eine Methode als Konstruktor ansiehst? Dann schlage ich vor, dass Du diese hier vorstellst, damit wir den Irrtum korrigieren können.

Konkret: Ein Konstruktor ist eine spezielle Methode ohne Rückgabewert, die den Namen der Klasse tragen muss. Genau an diesen beiden Bedingungen erkennt der Compiler einen Konstruktor.

Es scheint empfehlenswert, Dich auf einführende Literatur hinzuweisen, z.B. auf OpenBook Visual C#.

Jürgen

PS. Zwei Fragen -> zwei Diskussionen. Die zweite Frage hat nichts mit dem Titel zu tun.

PS 2. Benutzt Du wirklich NET 1.0? Ich schlage vor, durch Ändern Deines Beitrags dies zu korrigieren.

PS 3. Du arbeitest doch schon eine Weile mit NET. So grundsätzlich anders als VB.NET ist C# auch nicht, dass Du immer noch solche Fragen stellen kannst. NET ist NET - egal, ob VB.Net oder C# oder J# oder notfalls Delphi.Net.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 19.10.08 20:24 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Es geht also um die Beschreibung einer speziellen Instanz, nicht um die (statische) Beschreibung der Klasse.
Um es noch einmal anders auszudrücken: Statische Methoden werden über die Syntax
ausblenden Quelltext
1:
<Klassenname>.<Methodenname>					

aufgerufen (z.B. object.ReferenceEquals), während Instanzmethoden eben nur auf wirkliche Instanzen der Klasse angewendet werden können.

_________________
>λ=