Hallo C# User, ich bin gerade selber mir etwas C# beizubringen, ich benutze als Lernbuch Galileo Visual C# 2010 und bin im Thema "Ereignisse eines Objekts mittels Delegates". Ich habe stumpf die Code aus dem Buch eingegeben:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace GeemetricObject_Playground { // ---------- Delegate ---------- public delegate void InvalidRadiusEventHandler(); public class Kreis : IDisposable { // ---------- Ereignis ---------- public event InvalidRadiusEventHandler InvalidRadius;
private int _Radius;
public virtual int Radius { get { return _Radius; } set { if (value > 0) { _Radius = value; } else InvalidRadius(); } } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace GeemetricObject_Playground { class Program { static void Main(string[] args) { Kreis kreis = new Kreis(); kreis.InvalidRadius+=new InvalidRadiusEventHandler(kreis_InvalidRadius); kreis.Radius = -1;
Beim Compilieren kriege ich nun die folg. Fehlerausgabe: Fehler 1 "GeemetricObject_Playground.Kreis" implementiert den Schnittstellenmember "System.IDisposable.Dispose()" nicht.
Kein einer von Euch genau sagen, was ich falsch gemacht habe ?
Besten Dank schon mal im Voraus ! P.S.: Ich bitte euch um Nachsicht, bin ein Anfänger , was C# Programmierung angeht
Du definierst die Klasse Kreis und sagst selbiger, das Sie die Schnittstelle IDisposable implementieren soll. Aber die Implementierung hast du vergessen. Siehe hier:
public class Kreis : IDisposable { // ---------- Ereignis ---------- public event InvalidRadiusEventHandler InvalidRadius;
private int _Radius;
public virtual int Radius { get { return _Radius; } set { if (value > 0) { _Radius = value; } else InvalidRadius(); } }
// Track whether Dispose has been called. private bool disposed = false;
// Implement IDisposable. // Do not make this method virtual. // A derived class should not be able to override this method. public void Dispose() { Dispose(true); GC.SuppressFinalize(this); }
protected virtual void Dispose(bool disposing) { // Check to see if Dispose has already been called. if(!this.disposed) { // If disposing equals true, dispose all managed // and unmanaged resources. if(disposing) { // Dispose managed resources. // .... } // Dispose unmanaged resources. // ....
// Note disposing has been done. disposed = true; } } }