mustiwebp Geschrieben 31. Juli 2009 Geschrieben 31. Juli 2009 Hi, Ich habe folgendes Problem: Ich nutze Microsoft Visual C# 2008 und bei mir kommt folgende Fehlermeldung: Fehler 1 "Interface.benutzen" implementiert den Schnittstellenmember "System.IDisposable.Dispose()" nicht. C:\Users\Musti_2.Musti-PC\Documents\Visual Studio 2008\Projects\using.cs 63 11 Interface Der Quellcode der Klassen lautet: class set_beispiel { private int _zahl; public int zahl { get { return _zahl; } set { _zahl = value * 2; } } public void using_test() { using (benutzen main = new benutzen()) { Console.WriteLine(main.zahl); Console.ReadLine(); } } } class benutzen : IDisposable { public int zahl = 2; }
El Ninjo Geschrieben 31. Juli 2009 Geschrieben 31. Juli 2009 public void using_test() { using (benutzen main = new benutzen()) { Console.WriteLine(main.zahl); Console.ReadLine(); } } } class benutzen : IDisposable { public int zahl = 2; } Deine Klasse "benutzen" implementiert das Interface IDisposable. Also musst du auch alle Member dieses Interfaces in der Klasse definieren. IDisposable hat nur eins: die Methode Dispose(), welche dazu benutzt werden sollte Speicher auf dem Heap freizugeben, wenn ein Objekt zerstört wird. Diese Methode wird im using-Block benötigt. Davon mal abgesehen mach das using da wenig sinn, weil die Klasse "benutzten" nur ein int enthält und keinen Datentyp der dynamisch verwealtet wird. LG
JasonDelife Geschrieben 31. Juli 2009 Geschrieben 31. Juli 2009 Desweiteren solltest du dich an die Stilkonvetionen halten: class SetBeispiel // Klassen groß! { private int _zahl; public int Zahl // Public_property groß! { get { return _zahl; } set { _zahl = value * 2; } } public void UsingTest() // Public-Methode groß, ohne _ { using (Benutzen main = new Benutzen()) { Console.WriteLine(main.Zahl); Console.ReadLine(); } } } class Benutzen : IDisposable // Klassen groß! { public int Zahl { get; set; } // Public bevorzugt Properties public Benutzen() { Zahl = 2; } } Grüße, JasonDelife.
TDM Geschrieben 31. Juli 2009 Geschrieben 31. Juli 2009 Desweiteren solltest du dich an die Stilkonvetionen halten: class SetBeispiel // Klassen groß! { private int m_zahl; [COLOR="Red"]// Wenn dann m_[/COLOR] public int Zahl // Public_property groß! { get { return [COLOR="Red"]this.[/COLOR]m_zahl; [COLOR="Red"]// der Schönheit halber.[/COLOR] } set [COLOR="Green"]// Wenn ich so eine Klasse benutzen würde, würd ich mich wundern, warum immer meine Werte doppelt so groß sind[/COLOR] { [COLOR="Red"]this.[/COLOR]m_zahl = value * 2;[COLOR="Red"]// der Schönheit halber.[/COLOR] } } public void UsingTest() // Public-Methode groß, ohne _ [COLOR="Red"]- public Methoden müssen nicht groß sein.[/COLOR] { using (Benutzen main = new Benutzen()) { Console.WriteLine(main.Zahl); Console.ReadLine(); } } } class Benutzen : IDisposable // Klassen groß! { public int Zahl { get; set; } // Public bevorzugt Properties public Benutzen() { Zahl = 2; } public void Dispose() { } [COLOR="Red"]// ...[/COLOR] }
mustiwebp Geschrieben 31. Juli 2009 Autor Geschrieben 31. Juli 2009 (bearbeitet) Hi, Vielen Dank an alle! Davon mal abgesehen mach das using da wenig sinn, weil die Klasse "benutzten" nur ein int enthält und keinen Datentyp der dynamisch verwealtet wird. Ich weiß, dass "using" in diesem Kontext nicht sinnvoll ist! Ich wollte nur die Synatx lernen! :-) Mit freundlichen Grüßen mustiwebp Bearbeitet 31. Juli 2009 von mustiwebp
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden