Hallo zusammen,
ich beschäftige mich gerade mit dem Buch "Visual C# 2005", bin da aber noch bei Konsolenprogrammen.
Der Autor behandelt gerade Ereignisse und ich versuche das nachzucoden. Allerdings scheitert das Ganze immer aus einem mir unverständliche Grund, der sogar auftritt, wenn ich den Quellcode des Autors kopiere. Der Fehler lautet:
"Fehler CS0120: Für das nicht statische Feld, die Methode oder die Eigenschaft "EventTest.Program.RadiusError(EventTest.Circle)" ist ein Objektverweis erforderlich."
Der Fehler betrifft diese Codezeile:
C#-Quelltext
1:
| kreis.MeasureError += new MeasureErrorEventHandler(RadiusError); |
Zum besseren Verständnis poste ich mal den ganzen Quelltext. Zuerst die Klasse mit Main:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| using System; using System.Collections.Generic; using System.Text;
namespace EventTest { class Program { static void Main(string[] args) { Circle kreis = new Circle();
kreis.MeasureError += new MeasureErrorEventHandler(RadiusError); kreis.Radius = -1; Console.ReadLine(); }
public void RadiusError(Circle sender) { Console.WriteLine("Unzulässiger negativer Radius."); Console.Write("Neueingabe: "); sender.Radius = Convert.ToDouble(Console.ReadLine()); } } } |
Und hier die zweite Klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| using System; using System.Collections.Generic; using System.Text;
namespace EventTest { public delegate void MeasureErrorEventHandler(Circle c);
public class Circle { double radius = 0; public event MeasureErrorEventHandler MeasureError;
public double Radius { get { return radius; } set { if (value >= 0) radius = value; else if (MeasureError != null) MeasureError(this); } } } } |
Ich kann mir den Fehler nicht erklären, da ich in C# noch nicht so gut bin und alles so gemacht habe, wie der Autor schreibt. Falls mir jemand helfen kann, wäre ich sehr dankbar.
Vielen Dank im voraus.
Gruß Tom