属性——CLR via C# 读书笔记

好久没写博客了,看到书上的东西,记一记,哈哈
属性:分为无参属性和有参属性。无参属性是我们经常说的属性,而有参属性,不同的编程语言有着不同的称呼,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大)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值