Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Deklaration, Definition, Initialisierung, Public, Private, Protected, Void
Little Tester
myCSharp.de - Member



Dabei seit:
Beiträge: 103

Themenstarter:

Deklaration, Definition, Initialisierung, Public, Private, Protected, Void

beantworten | zitieren | melden

Habe ich das so eigentlich richtig verstanden, damit es da keine Verwirrungen meinerseits gibt?

Eine Deklaration ist sowas wie:


string computerName;

Eine Initialisierung ist sowas:


const string emailAdress = "[email protected]"; // Variable unveränderbar
string emailAdress = "[email protected]"; // Variable änderbar

Eine Definition ist sowas wie eine Funktion, also beispielsweise das hier:


public void SendMail() {}

Was mir nicht klar ist: Wann in der Praxis verwendet man public und wann kommt private zum Einsatz und warum macht man nicht alles public? Dann gibt es noch protected, aber das scheint eine Sonderform zu sein, die ich kaum wo sehe, bzw. ich habe nur davon gehört, gesehen noch gar nie.

Bei Funktionen wird wohl immer public genommen. Beim Form_Load oder Button_Click nimmt VS automatisch private.

Bei Funktionen kenne ich nur den Zusatz "void". Gibt es noch andere? Welche und wann werden die in praktischen Fällen verwendet?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Little Tester am .
private Nachricht | Beiträge des Benutzers
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 521
Herkunft: Münster

beantworten | zitieren | melden

Das ganze nennt sich Zugriffsmodifizierer und gehört zu den Grundlagen von OOP. Zugriffsmodifizierer geben die Möglichkeit, einfach zu steuern, wer wann auf welche Weise auf Klassen, Properties, Events, Felder und Methoden zugreifen darf.

https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1542
Herkunft: Düsseldorf

beantworten | zitieren | melden

Zitat
Eine Initialisierung ist sowas:

Deine Beispiele sind Deklaration und Initialisierung in einem.
Richtig wäre:


string email; // Deklaration
email = "[email protected]"; //Initialisierung
Zitat
Eine Definition ist sowas wie eine Funktion, also beispielsweise das hier

"Definition" ist meines Wissens nach gar nicht genauer belegt, ich würde darunter aber alles verstehen, wo irgendetwas eindeutig "beschrieben" wird, also auch Methoden, Klassen, Variablen, völlig egal was.
"Funktionen" sind in C# aber etwas anderes, was Du gezeigt hast, ist die Definition einer Methode.
Zitat
Wann in der Praxis verwendet man public und wann kommt private zum Einsatz und

Man überlegt sich, wann man etwas public braucht, alles andere bleibt private.
Das Thema heißt Kapselung - solltest Du dir anschauen, ist ein wichtiger Bestandteil von OOP.
Zitat
warum macht man nicht alles public?

Zur Sicherheit - Du lässt ja auch nicht jeden dein Geld überweisen, das willst Du schön selbst machen und dabei kontrollieren.
Zitat
Dann gibt es noch protected, aber das scheint eine Sonderform zu sein

Keine Sonderform, aber nur bei Vererbung relevant.
Sonderformen wären "internal", "private protected" und "protected internal".
Zitat
Bei Funktionen wird wohl immer public genommen

Natürlich nicht, aber es gibt leider viele, die das machen.
Man sollte sich immer überlegen, was von außen erreichbar sein soll und was nicht.

Ich persönlich versuche immer so wenig wie möglich public zu machen, eben nur das, was ich auch brauche. Dadurch muss ich in den Methoden nicht sicherstellen, dass sie auch gefahrlos von außen benutzt werden können und ich brauche keine Probleme mit anderen Code befürchten, wenn ich sie ändere.
Zitat
Bei Funktionen kenne ich nur den Zusatz "void"

Völlig anderes Thema.
"void" meint, dass die Methode keinen Rückgabewert hat.
private Nachricht | Beiträge des Benutzers
Wilfried
myCSharp.de - Member

Avatar #2TnJ7IKlYXgOor5sZSIA.jpg


Dabei seit:
Beiträge: 106
Herkunft: Radeberg

beantworten | zitieren | melden

Für Anfänger eine hilfreiche Lektüre:
Visual C# 2012 Rheinwerk Computing Das Klassendesign
-Wer lesen kann, ist klar im Vorteil
-Meistens sitzt der Fehler vorm Monitor
-"Geht nicht" ist keine Fehlermeldung !

GidF
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1542
Herkunft: Düsseldorf

beantworten | zitieren | melden

... generell das ganze Buch.

Wer Bereit ist, die 50€ auszugeben, kann auch direkt zum Nachfolger (Visual C# 2019) greifen.
private Nachricht | Beiträge des Benutzers
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 297

beantworten | zitieren | melden

Vorallem ließe sich wahrscheinlich der Großteil deiner bisher gestellten Fragen durch die ersten Kapitel bereits lösen
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16216

beantworten | zitieren | melden

Zitat von Palladin007
"Definition" ist meines Wissens nach gar nicht genauer belegt, i
"Funktionen" sind in C# aber etwas anderes, was Du gezeigt hast, ist die Definition einer Methode.

Wenn man den Ursprung beachtet und ganz ganz ganz exakt abwiegen will, dann ist eine Deklaration wenn etwas im Speicher reserviert wurde während eine Definition die Speicherinhalt-Zuweisung darstellt.
Letzteres ist also der Initialisierung in gewisser Art und Weise gleichzusetzen. Aber ja, Initialisierung ist hier das weit verbreitete Wort dafür.
Im Alltag ist Deklaration tatsächlich "alles".


string email; // Deklaration -> Speicherreservierung
email = "[email protected]"; // Definition -> Speicherzuweisung

Zitat von Little Tester
Eine Definition ist sowas wie eine Funktion, also beispielsweise das hier:
Wenn man das Wording streng auslegt, dann ist das keine Funktion (Funktionale Sprache), sondern eine Methode (OOP Sprache).
Einfacher kann man sich das eventuell merken wenn man statische Methoden Functions nennt und Klassen-Methoden eben Methoden; das ist durchaus gängig.

Ansonsten Funktionen in C# sind nochmal was extra, eine Art Syntaxzucker: Lokale Funktionen – C#-Programmierhandbuch

Aber fängst ganz schön spät mit den ganzen Grundlagen an, dafür dass Dir hier jeder seit mehreren Wochen in Deinen Themen sagt, dass Du Dich endlich mit den Grundlagen beschäftigen sollst :-)
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
M.L.
myCSharp.de - Member



Dabei seit:
Beiträge: 272

beantworten | zitieren | melden

Zitat
... generell das ganze Buch.
Ein Teil der Vorgehensweisen von 2012 ist aber geändert worden, Stichworte (z.B.): NuGet, Einsatz von VS Code, DateTime vs. DateTimeOffset
Goalkicker.com
DNC Magazine for .NET Developers,
.NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray ;-)
private Nachricht | Beiträge des Benutzers