Liebe/-r Wer-weiss-was-Expert/-in,
als Progammierdinosaurier habe ich nur mit FORTRAN gearbeitet. Jetzt muß / will ich in C# einsteigen. Mein Wissen ist hier null!
Welches Buch empfiehlst Du mir?
Zur Zeit habe ich ein Buch von Anders Hejlsberg et al.
In der Einführung unter 1.1 Hallo, Welt tauchen im nächsten Absatz Begriffe auf wie using-Direktive, Namespace System, Klasse Console, Namespacec wie 10 und Collection, Klasse Hello, Modifizierer static, Schlüsselwort this, Objectdistanz, Statische Methode Main, .NET Framework-Klassenbibliothek usw.
Ehrlich, so eine überfrachtete Programmeinführung habe ich noch bei keinem Lehrbuch erlebt!
Gruß, Heinz
Hallo Heinz,
ich fand folgende Bücher sehr praktisch:
ISBN 3827325765 Buch anschauen
ISBN 3860637762 Buch anschauen
Das zweite gibt einen guten Einstieg - Schleifen, Variablendeklaration usw - halt die Basics. und das erste ist quasi eine Sammlung von „Rezepten“ also „wie lese und schreibe ich Dateien“, „wie erstelle ich Messagboxen“ und so weiter.
Ich hoffe das hilft - ansonsten kannst du mich auch gern wieder fragen
Martin
Hallo Heinz
Ich kann dir den Schinken empfehlen, den ich im Regal stehen habe: Visual C# 2005 von Frank Eller vom Addison-Wesley Verlag. Vielleicht gibt es ja auch eine 2008er Ausgabe?
Jedenfalls gibt es da eine sorgfältige Einführung in den Sprachaufbau und nachher eine Einführung in die objektorientierte Programmierung. Und dann gibt es Kapitel zu allen relevanten Themen… Was ich schlussendlich aber auch entscheidend finde, ist, dass das Buch auch nach dem Einstieg immer noch nützlich ist, selbst nach mehreren Jahren C#-Programmierung, finde ich immer wieder etwas hilfreiches in dem Buch.
Falls du keine Erfahrung mit der Objektorientierten Programmierung hast, bin ich nicht sicher, ob die Einführung im Buch das genug genau erklärt (die ist am Anfang schon noch gewöhnungsbedürftig). Da müsstest du dich vielleicht noch parallel zum Buch bilden, was denn Objekte und Klassen eigentlich sind, bis du das wirklich verstanden hast, damits richtig Spass macht. Aber das ist ja Sprachunabhängig…
Dann mag ich auch das Open-Galileo-Book auf: http://openbook.galileocomputing.de/csharp/
Viel Glück und Erfolg
Marion
Hi
Ich hab mit dem Lehrbuch von Galileo Computing angefangen zu lernen… klingt ein wenig nach 0815, aber ich muss sagen es ist relativ leicht verständlich^^
Die begriffe, die in deinem Buch vorkommen sind Grundwissen, also ist es ziemlich wichtig, dass die gut erklärt werden… ist das nicht der fall in deinem Buch, hat es auf ganzer Linie versagt
Ich versuch’s mal, bin aber denke ich auch nicht so der Held im Erklären
Also, ich fang mal bei null an:
Klassen
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Klassen kannst du dir vorstellen wie ein Koffer. Variablentypen wie Integer (Int), String oder Double kennst du wahrscheinlich schon. In Diesen „Koffer“ kannst du jedenfalls genau diese Variablen einpacken. Und noch mehr: In eine Klasse kannst du auch Methoden und weitere Klassen tun. Das ist dann von Vorteil, wenn du z.B. etwas beschreibst - beispielsweise schreibst du einen MediaPlayer und bei diesem Programm hast du dann ja viel mit einzelnen Songs zu tun. Um einen Song zu beschreiben würde ich dann die Klasse (den ‚Koffer‘) „Song“ erstellen:
public class Song
{
public string Titelname;
public string Interpret;
public string Album;
public int Titelnummer;
// Und alle Eigenschaften, die noch haben willst…
public void PlaySong()
{
// Dein Code zum Abspielen eines Songs…
}
}
So, jetzt hast du eine Klasse, die Songs beschreibt. Und immer wenn du ein Song (mittels eines OpenfileDialogs) deiner Medienbibliothek hinzufügst, kannst du diese Song-Datei von deinem PC mit dieser Klasse beschreiben, indem du von der Klasse eine Instanz machst:
Song MeinSong = new Song();
MeinSong.Titelname = „In The End“;
MeinSong.Interpret = „Linkin Park“;
MeinSong.Album = „Hybrid Theory“;
Jetzt hast du eine Instanz [erstellt durch 'Song MeinSong = new Song()], die Songs beschreibt.
Namespace
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Namespaces sind so ähnlich wie Klassen, nur du kannst keine Instanz draus machen. Sie sind quasi auch Koffer, sind aber übergeordnet und beinhalten Klassen.
Modifizierer
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Modifizierer (auch Modifier) sagen aus, wie man eine Klasse/Variable/Methode behandeln kann. Hier die Beispiele, die ich benutze (static kann ich dir leider nicht erklären, weiß nicht genau, welche Eigenschaften ‚static‘-Klassen oder Variablen haben.
public
Klassen/Methoden/Variablen, die public sind, können ‚von außerhalb‘ gesehen werden. Stell dir Folgendes vor:
class Test
{
public string Sichtbar;
private string Unsichtbar;
public int GetUnsichtbar()
{
return Unsichtbar;
}
}
Test t = new Test() // Instanziiere die Klasse und nenne sie ‚t‘
Jetzt kann ich nur auf die public-Variable „Sichtbar“ von außen zugreifen, auf die ‚private‘ Variable nicht, die könnte ich nur innerhalb der Klasse selbst verwenden, wie ich’s in der „GetUnsichtbar“-Methode gemacht habe, die als Rückgabewert, den Wert von „Unsichtbar“ hat.
Das erklärt dann auch die Eigenschaft von „private“. Private Klassen/Methoden/Variablen werden sozusagen von der „Außenwelt“ abgetrennt und geschützt, sie können nur in dem Bereich, in dem sie erstellt (deklariert) wurden benutzt und geändert werden. Sie sind quasi „stealth“ unterwegs
Schlüsselwort This
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Das Schlüsselwort This setzt immer eine Referenz auf das Objekt, dessen Code du gerade Bearbeitest. Sagen wir du hast eine Form, nennen wir sie Form1. Auf diese Form setzt du einen Button1. Erstellst dann das Click-Ereignis. Der Code, den du bekommst, sieht dann so aus:
private Button1_Click(object sender, EventArgs e)
{
}
Würdest du in diesem Ereignis ‚this‘ benutzen, referenziert es die Form1, nicht den Button, da der Button nur ein COntrol von Form1 ist. Das This bezieht sich also immer auf das hierarchisch höchst gelegene Control. Hier ist es die Form1, das ist bei jeder Form so, bei UserCOntrols aber z.B. nicht. Da sind die UserControls es, auf das das this referenziert.
Statische Methode Main
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Mit der hat man normalerweise gar nichts am Hut. Das ist die Methode, die zu Beginn beim Ausführen deines Programms durchlaufen wird, um somit dein Programm zu starten - ist quasi die Zündkerze deines Otto-Motors - mehr nicht
Ich hoffe, ich hab mich nicht zu blöd angestellt und es dir unmöglich gemacht durch meine Erklärungen durchzusteigen^^
Grüße zurück
Julian