關於C#中 從未對字段***賦值,字段將一直保持其默認0


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

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM