C#2.0类和对象学习系列之属性
2008-02-25 15:48
447 查看
C# 允许再类或结构内定义属性。属性允许用访问 字段的语法来访问实例的状态,但不需要直接访问字段。这种访问是通过一类特殊的方法来完成的,这种方法称作属性访问器。优点如下:
1.类的用户希望能通过访问字段的语法来访问对象的状态。这样就不用显示地调用方法了。
2.类的开发人员希望截获所有对象状态的访问,可以用属性的访问器来做到这一点
对象状态的访问有两种(读和写),因此每个属性的访问器就可能有两种:
1.每次读取对象的属性时,get访问器被调用。文档中我们称作获取器。
2.每次写入对象的属性时,set访问器被调用。文档中我们称作设置器。
public class Foo
{
private int m_FieldPrivate = 10; //int 类型属性
public int Prop
{
get
{
return m_FieldPrivate;
}
set
{
m_FieldPrivate = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
foo.Prop = 10;
int i = foo.Prop;
}
}
访问器是像方法一样的代码,但有几点不同:
1.他们不能当作方法直接调用。
2.在它们的声明中没有输入或输出参数。
属性可以是任意类型(值类型或引用类型)。如上例所示,属性通常配合一个相关的私有字段来使用。
1.类的用户希望能通过访问字段的语法来访问对象的状态。这样就不用显示地调用方法了。
2.类的开发人员希望截获所有对象状态的访问,可以用属性的访问器来做到这一点
对象状态的访问有两种(读和写),因此每个属性的访问器就可能有两种:
1.每次读取对象的属性时,get访问器被调用。文档中我们称作获取器。
2.每次写入对象的属性时,set访问器被调用。文档中我们称作设置器。
public class Foo
{
private int m_FieldPrivate = 10; //int 类型属性
public int Prop
{
get
{
return m_FieldPrivate;
}
set
{
m_FieldPrivate = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
foo.Prop = 10;
int i = foo.Prop;
}
}
访问器是像方法一样的代码,但有几点不同:
1.他们不能当作方法直接调用。
2.在它们的声明中没有输入或输出参数。
属性可以是任意类型(值类型或引用类型)。如上例所示,属性通常配合一个相关的私有字段来使用。
相关文章推荐
- C#2.0类和对象学习系列之构造函数
- C#2.0类和对象学习系列之索引器
- c#2.0类和对象学习系列之输出参数
- C#2.0类和对象学习系列之this关键字
- C#2.0类和对象学习系列之this关键字
- C#2.0类和对象学习系列之参数初始化
- C#2.0类和对象学习系列之params关键字
- C#2.0类和对象学习系列之ref关键字
- C#2.0类和对象学习系列之get,set访问器
- C#2.0类和对象学习系列之this关键字
- C#温故而知新学习系列之面向对象编程—属性(十二)
- C#温故而知新学习系列之面向对象编程—15-对象初始化器
- C#温故而知新学习系列之.NET框架高级特性—.NET框架中自身提供的属性(二)
- C#温故而知新学习系列之XML编程—6-XmlSerializer类把复杂对象序列化为XML文档
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- C#温故而知新学习系列之面向对象编程—定义类与创建类的对象(一)
- C#温故而知新学习系列之.NET框架高级特性—.NET框架中自身提供的属性(二)
- C#温故而知新学习系列之面向对象编程—11-自动属性
- C#温故而知新学习系列之XML编程—XMLSerializer类把XML文档反序列化为对象(八)
- C#温故而知新学习系列之面向对象编程—对象初始化器(十五)