对于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字段便会被赋值。这样警告就会消失了。