无参属性
属性只不过是一种“高级字段”c#反编译软件,与字段相比,属性实现了对字段的封装。
CLR提供了属性的机制,简化写法c#反编译软件,这样属性就没有任何特殊行为,也成为自动属性:
public int Age { get; set; }
无参属性只是语法糖,反编译后编译器仍旧会自动为我们生成get和set方法以及一个支持字段,本质上就是一个或者两个方法,只是在我们客户端代码看起来更像是一个字段而已。
只读和只写属性
只读:
public int Age { get; }
此时这个属性就只是只读了,初始化这个属性的值后,就再也无法更改它的值。
带有逻辑的属性
我们可以通过给get和set加入代码控制属性的范围。
private int age;
public int Age {
get {
return age;
}
set {
if (value < 0) {
throw new ArgumentOutOfRangeException("Age",value,"Age必须大于等于0");
}
age = value;
}
}
有参属性
有参属性又叫索引器,它是重载[]操作符的一种方式,让对象以类似数组的方式来存取。
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
Console.Write(myClass[1]); // 李四
Console.ReadKey();
}
}
public class MyClass
{
private string[] _names = { "张三", "李四", "王五", "赵六", "田七" };
public string this[int index]
{
get
{
if (index = _names.Length)
{
throw new ArgumentException();
}
return _names[index];
}
set { _names[index] = value; }
}
}
属性的意义
通过属性的封装,保留了与外部交互的能力,又实现了可靠的读写机制。
例如ATM机可以存取钱,查询余额等,但是它为什么可以做到这些,怎么做的,比如钱是怎么吐出来的我们不需要知道,我们只需要知道一些简单的操作步骤即可达成我们的目的。通过封装,类型只需要向外部提供它应该知道的信息。
———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99