| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5241 人关注过本帖, 1 人收藏
标题:原来属性的Get和Set访问器还可以这样用
取消只看楼主 加入收藏
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
结帖率:100%
收藏(1)
 问题点数:0 回复次数:0 
原来属性的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; } 
    }
这样就不行了,编译器是会报错的哦

[[italic] 本帖最后由 天堂落日 于 2008-1-23 13:27 编辑 [/italic]]
搜索更多相关主题的帖子: Get Set 属性 get set 
2008-01-23 13:23
快速回复:原来属性的Get和Set访问器还可以这样用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024016 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved