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; } 
    }
这样就不行了,编译器是会报错的哦

发布了3 篇原创文章 · 获赞 0 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览