PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe beim Lernen von C#



Hellmut
10.06.2011, 19:12
Hallo Freunde

Als Teil meiner Projekte möchte ich dazu passende Software auf dem PC schreiben und habe dafür Visual Studio 2010 mit Visual C# als Sprache. Als Lehrbuch verwende ich das sehr empfehlenswerte Buch von Andreas Kühnel, Visual C# 2010, "Das Unfassende Handbuch", was man komplett und legal Online (http://openbook.galileocomputing.de/visual_csharp_2010/) sehen kann unter.

Leider weisst das Buch einige Inkonsistenten im Quelltext zwischen den Kapiteln auf, jedoch ist das Beheben der Probleme eine hilfreiche Übung beim Lernen.

Jetzt habe ich 3 Fehler-Meldungen, die ich nicht verstehe, und dass, obwohl ich eigentlich meine den Kode aus dem Buch korrekt übernommen zu haben. der Fehlerkode ist CS0103 in allen 3 Fällen. Hier der Quelltext aus der Program.cs Datei:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GeometricObjects
{
publicclassProgram
{
GraphicCircle gc = newGraphicCircle();
staticvoid Main(string[] args)
{
Circle kreis = newCircle ();
kreis.Radius = 20;
kreis.XKoordinate = 10;
kreis.YKoordinate = 10;
if (kreis == null)
{
// die Variable kreis referenziert kein Objekt
Console.Write("kein Kreis vorhanden\n");
kreis = newCircle();
}
else
{
// Kreis ist eine gültige Objektreferenz
Console.WriteLine("Der Kreisradius beträgt {0,10}", kreis.Radius);
Console.Write("Die X-Koordinate beträgt {0,10}\n", kreis.XKoordinate);
Console.WriteLine("Der Y-Koordinate beträgt {0,10}\n", kreis.YKoordinate);
Console.ReadLine();
}
}
}
}


Der Debugger sagt, dass der Name "Console" im aktuellen Kontext nicht vorhanden sei!

Der 2. ganz ähnlich gelagerte Fehler bezieht sich auf den Namen "Math" in folgenden Quelltext:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GeometricObjects
{
public class Program
{
GraphicCircle gc = new GraphicCircle();
static void Main(string[] args)
{
Circle kreis = new Circle ();
kreis.Radius = 20;
kreis.XKoordinate = 10;
kreis.YKoordinate = 10;
if (kreis == null)
{
// die Variable kreis referenziert kein Objekt
Console.Write("kein Kreis vorhanden\n");
kreis = new Circle();
}
else
{
// Kreis ist eine gültige Objektreferenz
Console.WriteLine("Der Kreisradius beträgt {0,10}", kreis.Radius);
Console.Write("Die X-Koordinate beträgt {0,10}\n", kreis.XKoordinate);
Console.WriteLine("Der Y-Koordinate beträgt {0,10}\n", kreis.YKoordinate);
Console.ReadLine();
}
}
}
}


Ich hoffe es kann mir jemand helfen.

Hubert.G
10.06.2011, 20:38
Hier wirst du ja schon nachgeschaut haben. http://msdn.microsoft.com/de-de/library/t8zbaa6f%28v=vs.80%29.aspx
Bei mir kommen solche Fehler wenn ich die entsprechende Library mit #include nicht eingebunden habe.

shedepe
10.06.2011, 20:40
Also erstens solltest du mal versuchen deine Quelltextformatierung etwas zu überarbeiten, die wirkt sehr unübersichtlich (kann natürlich auch nur durchs kopieren kommen)
Dann:
"public class Program" schreibt man außeinander, also zwischen public und class z.B. ein Leerzeichen
Dann, auswelchem namespace bzw. Woher kommt die Klasse Circle / GraphicCircle ? Und warum brauchst du ein Grafikobjekt (GraphicCircle hört sich danach an) in einer Konsolenanwendung?

Warum der Console nicht kennt wundert mich jetzt auch, da du die entsprechenden usings hinzugefügt hast.
Überprüf mal im Projektmappen-Explorer unter Verweise ob auch die richtigen Verweise auf System usw. vorhanden sind.
Du hast in den Projekteinstellungen auch unter Ausgabetyp: "Konsolenanwendung" gewählt. (Bzw. du hast eine Konsolenanwendung erstellt?)

Hellmut
10.06.2011, 21:12
Erstmal Danke für die ersten Antworten. es ist richtig, die Formatierung ist durch das Kopieren verloren gegangen. In Editor von Visual Studio 2010 wird das ordentliche Formatieren ja von haus aus sehr unterstützt. Auch die Lehrzeichen wie oben zu recht kritisiert befinden sich im Original im Editor.

Das Lehrbuch fängt dankenswerter Weise mit etwas ähnlichen wie "Hello World" an und führt in die IDE, Visual C# und .Net ein. Das Programm erarbeitet man sich im Laufe der Durcharbeit des Lehrbuches. Die Console macht ja das "Hello World" sehr einfach, immer F5 drücken und schon erscheint das Konsolen-Fenster und man erkennt an dem Inhalt ob das gewollte geklappt hat. Im Laufe des Buches wird dann auch auf eine grafische Oberfläche übergegangen, so bleibt das Programm und das Verstehen doch viel einfacher.

Im jetzigen Kapitel arbeite ich mich in Vererbung, Polimorphie und Interfaces ein. In den früheren Kapiteln habe ich zuerst nur eine Klasse Circle definiert und GraphicCircle ist eine Solche Klasse die die Eigenschaften von Circle erbt.

Die Fehlermeldungen vom Debugger sprechen davon, dass "Math" und "Console" in dem Kontext nicht verfügbar sein. Ich versuche zu verstehen warum! es sind ja genau die Grundverständnisse die ich mir erarbeiten will!

@Hubert: Obwohl ich vor vielen Jahren Einführungskurse zu C genommen habe, bin ich nie ein C Programmierer gewesen. Ich freue mich mit Visual Studio 2010 und dem Lehrbuch auf welches ich das Link gegeben habe, nicht erst versuchen zu müssen das Konzept der Tool Chain und wie man sie richtig konfiguriert erarbeiten zu müssen. da habe ich bei mehreren Versuchen nach einiger Qual und Hoffnungslosigkeit aufgegeben. Nach den Lehrbuch habe ich mit den mit "using" angesprochenen Klassen, direkt vom Lehrbuch übernommen, der Notwendigkeit genüge getan was sonst mit den #include gemacht wird.

Ich denke das ich durch Formatierungs- oder Tippfehler irgendwie dafür gesorgt habe, dass "Math" und "Console" so an der Stelle im Kodenicht verfügbar sind! Vergesst nicht es geht ja um Vererbung, usw.!

shedepe
10.06.2011, 21:16
Dadurch dass Console (zumindest wenn man Konsolenanwendung als Typ wählt) static ist, kann man von überall im Programm drauf zugreifen. Probier mal test weise den Rest rauszuschmeißen und nur ne Kleinigkeit auf der Console auszugeben. Wenn das NICHT gehen sollte, leg das Projekt noch mal neu an

PS. Wenn du dich auch in Zunkunft weiter mit C# beschäftigen willst kannst ja mal hier vorbeischaun
http://www.mycsharp.de

Hellmut
10.06.2011, 23:38
Hallo shedepe

bevor ich mich mit den Übungen und Kode zu den Vererbungen beschäftigt habe hat die Anweisung perfekt funktioniert. Das ist ja das Problem, warum jetzt nicht. das möchte ich wissen, da es hier um entscheidendes zum verständnis der Sprache und der Objekt-Programmierung geht.

Habe übrigens unter dem Link nachgeschaut. Sehr interessantes Forum, für einen bltugigen Anfänger allerdings nicht gedacht, wie die Forenregeln sagen.

shedepe
11.06.2011, 02:54
Dennoch kannst du versuchen, das ganze noch mal als neues Projekt zu erstellen, nicht dass eine zerschossene Projekteinstellung dein Problem ist. Die Vererbung sollte eigentlich keine Auswirkung auf den Zugriff auf die Consoleklasse haben.
In dem Forum kannst du besonders im Bereich Artikel und FAQ einiges lernen, da dort viele Anfängerfragen recht gut beantwortet und zusammengefasst sind

Hellmut
11.06.2011, 12:09
Da hast du natürlich recht, aber mit dem Buch, auf welches auch dort an prominenter Stelle verwiesen wird, habe ich schon eine gute Quelle. Wenn ich dich richtig verstehe, so meinst du, dass dieser Fehler so eigentlich nicht auftauchen sollte?