對於VS里面提示:
原來的代碼如下:
Shape.cs中
1 abstract class Shape 2 { 3 protected double _area; 4 abstract public double Area 5 { 6 get; 7 } 8 }
Ellipse.cs中
1 class Ellipse:Shape 2 { 3 public override double Area 4 { 5 get 6 { 7 return Math.PI * _semiMinorAxis * _semiMinorAxis; 8 } 9 }
上面的提示是因為字段 _area 是protected的,而且在Area方法中又沒有set方法。
要使上面的提示消失,需要在Shape類中聲明set方法並在Ellipse類中重寫set方法。
代碼如下:
1 abstract class Shape 2 { 3 protected double _area; 4 abstract public double Area 5 { 6 get; 7 set; 8 } 9 }
1 public override double Area 2 { 3 get 4 { 5 return Math.PI * _semiMinorAxis * _semiMinorAxis; 6 } 7 set 8 { 9 _area = value; 10 } 11 }
這樣當對屬性Aera賦值的時候,_area字段便會被賦值。這樣警告就會消失了。
推薦你看一下張子陽的博客。這里對C#中的各種面向對象的概念講得很透徹。比如 C#中的委托和事件