| 

.NET C# Java Javascript Exception

1
'Klasse.FarbCode.set' must declare a body because it is not marked abstract, extern, or partial

public string FarbCode{
get { //code }
set;
}

Ich verstehe leider die Fehlermeldung nicht :/
28.07.2009
Tribal123 185 1 4
3 Antworten
2
Also wenn ich es weglasse und per Interface aber ein set gefordert wird, geht es trotzdem weil es implizit da ist?


Wenn das Set fehlt generiert der Kompiler keine Set-Methode. Wird dies jedoch vom Interface gefordert dann muss auch der Set-Teil vorhanden sein. Wird dieser jedoch nicht benötigt so kein Code darin stehen oder ein Fehler geworfen werden falls versucht wird den Wert zu setzen.

Beispiel:
interface IMyInterface
{
string FarbCode { get; set; }
}

class MyClass : IMyInterface
{
private string _farbCode = "xyz";
public string FarbCode
{
get { return _farbCode; }
set { throw new NotSupportedException("Die Eigenschaft ist schreibgeschützt."); }
}
}


Oder es wird der Set-Teil bereits im Interface weggelassen.
29.07.2009
gfoidl 9,1k 3 5
1
Ja das ist natürlich eine Möglichkeit! - Danke
Tribal123 29.07.2009
3
D.h. der Kompiler weiß nicht was er mit dem set; anfangen soll. Lass das set; einfach weg und es funktioniert.

Hintergrund:
Für Eigenschaften werden vom Kompiler eine Get- und eine Set-Methode erzeugt. Im obigen Code von dir ist das Set ein "leer" Methode und die gibt es nur wenn sie als abstract, partial (oder extern) deklariert ist.
28.07.2009
gfoidl 9,1k 3 5
1
Also wenn ich es weglasse und per Interface aber ein set gefordert wird, geht es trotzdem weil es implizit da ist?
Tribal123 29.07.2009
1
Siehe die Antwort dazu. Es enthält auch ein Code-Beispiel.
gfoidl 29.07.2009
1
Das Schreiben von "set;" bzw "get;" ist nur in Interfaces oder automatisch implementierten Properties erlaubt.

Weitere Infos:
Auto-Implemented Properties (C# Programming Guide)
Compiler Error CS0840
07.09.2009
stj 326 1 2

Stelle deine .net-Frage jetzt!