好久没写博客了,看到书上的东西,记一记,哈哈
属性:分为无参属性和有参属性。无参属性是我们经常说的属性,而有参属性,不同的编程语言有着不同的称呼,C#中称之为所引起。
一、无参属性
1、自动实现属性
声明属性但不提供get/set方法的实现,C#自动为你声明一个私有字段。
public string name{ get;set; }
2、对象初始化器语法
Employee e= new Employee(){Name="Jeff",Age=45};
//等价于下面的代码
Employee e = new Employee();
e.Name="Jeff";
e.Age=45;
对象初始化器语法的好处在于,它允许在表达式的上下文(相对于语句的上下文)中编码,允许组合多个函数,进而增强代码的可读性。
String s=new Employee() {Name="Jeff",Age=45}.ToString().ToUpper();
注:如果想调用的本来就是一个无参构造函数,代码还可以省略小括号
String s=new Employee {Name="Jeff",Age=45}.ToString().ToUpper();
3、有参属性
get访问器方法接受一个或多个参数,set访问器方法接受两个或多个参数。C#中称之为索引器。
C#使用数组风格的语法来公开有参属性(索引器)。换句话说,可将索引器看成C#开发人员对[]操作符的重载。
4、属性访问器的可访问性
有时候想要get访问器方法指定一种可访问性,而set访问器方法指定另一种可访问性
public class SomeType{
private string m_Name;
public string Name{
get{return m_Name};
protected set{m_Name=value}
}
}
Name属性本身声明为public属性,意味着get访问器方法是公共的,所有代码都能调用。而set访问器方法声明为protected,只能从SomeType内部定义的代码中电泳,或者从SomeType的派生类的代码中调用。
定义属性时,如果两个访问器方法需要不同的访问性,C#要求必须先为属性本身指定限制最小的可访问性,然后两个访问器只能选择一个来使用限制较大的。在前面的例子中,属性本身声明为public,而set访问器方法声明为protected(限制较public大)。