您的位置:首页 > 编程语言 > C#

关于C#中 从未对字段***赋值,字段将一直保持其默认0

2013-05-28 19:51 891 查看
对于VS里面提示:


原来的代码如下:

Shape.cs中

abstract class Shape
{
protected double _area;
abstract public double Area
{
get;
}
}


Ellipse.cs中

class Ellipse:Shape
{
public override double Area
{
get
{
return Math.PI * _semiMinorAxis * _semiMinorAxis;
}
}


上面的提示是因为字段 _area 是protected的,而且在Area方法中又没有set方法。

要使上面的提示消失,需要在Shape类中声明set方法并在Ellipse类中重写set方法。

代码如下:

abstract class Shape
{
protected double _area;
abstract public double Area
{
get;
set;
}
}


public override double Area
{
get
{
return Math.PI * _semiMinorAxis * _semiMinorAxis;
}
set
{
_area = value;
}
}


这样当对属性Aera赋值的时候,_area字段便会被赋值。这样警告就会消失了。

推荐你看一下张子阳的博客。这里对C#中的各种面向对象的概念讲得很透彻。比如 C#中的委托和事件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: