《随笔六》——C#中的 “属性和索引器中的 get 和 set 访问器的访问修饰符”

目录

属性和索引器中的 get 和 set 访问器的访问修饰符



属性和索引器中的 get 和 set 访问器的访问修饰符


●  索引器和属性自带 get 和 set 访问器,  在默认的情况下:  如果一个属性有public 访问级别, 那么它的那个两个访问器都有同样的访问级别。 索引器也一样。

●  不过我们也可以为两个访问器分配不同的访问级别。

下面看一个示例程序:

namespace Ch05Ex03
{
    class Persion
    {
        public string Name
        {
            get; // 默认设置为public的, 因为该属性是public的
            private set; //把set设置为 私有的访问级别,这样在外面就不能设置访问器了
        }
        public Persion(string name)
        {
            Name = name; // 只能在类的内部设置该属性了,这里用构造函数设置
        }
        public void SetValue(string _name)
        {
            Name = _name; //也可以用公有的成员函数设置
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Persion p = new Persion("Capt.Ernest Evans");
            WriteLine($"先输出名字是:{p.Name}");

           // p.Name = "huangh"; //不可以在类外设置set访问器,因为该访问器是私有

            p.SetValue("huangchengtao"); // 通过类的公有函数设置set访问器
            WriteLine($"\n在先输出名字是:{p.Name}");
            ReadKey();
        }
    }
}

输出结果为:

先输出名字是:Capt.Ernest Evans

在先输出名字是:huangchengtao

注意: 在这段代码中,尽管可以在类的外部读取该属性,但却只能在类的内部设置它, 既可以是类的构造函数、也可以是其它的成员函数。 这是一个非常重要的封装工具。

 

●  访问器的访问修饰符有几个限制, 需要重要注意的有:

属性或索引器既有get访问器又有set访问器时, 其访问器才能有访问修饰符。

虽然两个访问器都必须出现,但是只能有一个访问器能有访问修饰符。

访问器的访问修饰符必须比 属性或索引器 的访问级别 有更严格的访问级别。

比如说: 如果一个属性的访问级别是public的,那么其中一个访问器的访问级别可以是protected、private、internal。

如果说属性的访问级别是protected, 那么访问器的修饰符只能是 private的。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值