对于VS里面提示:关于C#中  从未对字段***赋值,字段将一直保持其默认0

原来的代码如下:

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#中的委托和事件

 

 

 

相关文章:

  • 2022-03-06
  • 2021-08-09
  • 2022-12-23
  • 2021-11-23
  • 2021-06-25
  • 2021-07-15
  • 2021-09-08
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
相关资源
相似解决方案