| 

.NET C# Java Javascript Exception

1
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;

Console.ReadLine();
}
public static void kreis_InvalidRadius()
{
Console.WriteLine("Unzulässiger Wert !");
}
}
}


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
News:
24.04.2011
Gast
11 1 2
Floyd 14,6k 3 9
1 Antwort
2
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;
}
}
}


Siehe auch die MSDN-Artikel System.IDisposable und Implementieren einer Dispose-Methode.
24.04.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH