Nun, da A
override
als die Basisklasse muss haben beideget
und set
(sonst der Code kompiliert nicht) z
public class MyBase {
public virtual String A {
get {
return "getBaseA";
}
set {
throw new NotSupportedException("setBaseA");
}
}
}
Jetzt haben Sie zwei verschiedene abgeleitete Klassen:
public class MyDerivedA: MyBase {
public override String A {
get {
return "s";
}
set { // set is overridden, now set does nothing
}
}
}
public class MyDerivedB: MyBase {
public override String A {
get {
return "s";
}
// set is not overridden, same as in the base class
}
}
die beiden set
Methoden Lassen Sie rufen:
// Does nothing: overridden MyDerivedA.A.set is called
MyBase test1 = new MyDerivedA();
test1.A = "Sample";
// Will throw NotSupportedException (base MyBase.A.set is called)
MyBase test2 = new MyDerivedB();
test2.A = "Sample";
Versuchen Sie 'A =" ";' und sehen Sie, was passiert. –