`
fdyang
  • 浏览: 79663 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

(C#)属性(property)

阅读更多

(C#)属性(property)

属性是字段和方法的一个交集。看起来像是一个字段,行为上又像是一个方法。
是类维持了封装性,有可以方便地使用字段。
- 访问属性的语法和访问一个字段(类成员)的语法是相同的。(
- 实际上,编译器自动转换为对特定accessor方法(取值和赋值方法统称为accessor方法)的调用

属性的声明如下:

 

AccessModifier Type PropertyName 
{
get
{
//取值代码 (get accessor ) 
}
set
{
//赋值代码 (set accessor )
}
}
 

举例如下:配置ScreenPosition 的属性.

 

struct ScreenPosition
{
//小写的x,y是私有字段
private int x, y; 

public ScreenPosition(int X, int Y)
{
this.x = rangeCheckedX(X);
this.y = rangeCheckedY(Y);
}

//大写的X,Y是公用属性
public int X
{
get { return this.x; }
set { this.y = rangeCheckedX(value); }
}

public int Y
{
get { return this.y; }
set { this.y = rangeCheckedY(value); }
}

private static int rangeCheckedX(int x) { ... }
private static int rangeCheckedY(int y) { ... }

}
 

使用属性.

 

ScreenPosition origin = new ScreenPosition ( 0, 0 ) ; 
int xpos = origin.X ; // 实际调用 origin.X.get 
origin.Y = 100 ; // 实际调用 origin.Y.set
 

只读属性 - 有get 没有 set .
只写属性 - 有set 没有 get

在接口中声明属性.
- 将get accessor 或 set accessor 主体替换成一个分号 . 

 

interface IScreenPosition
{
	int X { get; set; }
	int Y { get; set; }
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics