c#属性get、set不同访问权限写法

虽然知道这么用,但一直没用过,等到用的时候发现不会写了,查了好久才找到~~~。

【转载】原来属性的Get和Set访问器还可以这样用

以前记得论坛有过一个帖子是专门讨论C#中属性的用处的
今天翻阅《C#高级编程》的时候又发现一条
C#允许给属性的get和set访问器设置不同的访问修饰符,所以属性可以有公共的get访问器和私有的或者是受保护的set访问器。这有助于控制属性的设置方式或者时间。
可惜的是书上给的例子完全错了,就是很普通的属性设置

程序代码:
public string Name
{
     get { return _name; }
     set { _name = value; }
}
这么好的书,这电脑的高科技的,怎么也这样蒙人啊? 完完全全都是public访问级别嘛
后来经过自己尝试,发现正确的用法是这样的
public string Name
{
    get { return _name; }
    protected set { _name = value; }//注意看访问级别,和外层的不一样哦}
这样以来,就实现了get和set具备不同的访问级别啦
使用的时候 要主意以下几点:
1、定时属性的时候,外层一定要有访问级别修饰符(就是public string Name)这里啦

2、在定义get和set访问级别的时候,只能为其中一个单独设置
     意思就是说不能在get前边来一个public,然后在set前边再来一个修饰符,两个当中只有一个能设置的哦
       别扔转头,什么,不就是想给set和get两个设置不同的访问级别嘛,你以为第一条上说的外层的修饰符是干嘛用的?
     看例子,get前边没写访问修饰符吧?这样它的权限默认是外层的权限,也就是public啦
     set的权限我就不用再说了,前边白纸黑字,一个 protected 在那大大的竖着呢

3、外层的访问权限一定要比内层的更为宽松,这个也要主意,还说上边的例子
     为了实现同样的访问控制级别,如果你写成
程序代码:
protected  string Name //外层protected
    {
        public get { return _name; } //内层public
        set { _name = value; } 
    }
这样就不行了,编译器是会报错的哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值