封装  应用
本类调用  属性  外层调用封装

只 读 只包含get 访问器
 
只 写 属性  只包含set 访问器

如果将一个属性设置为只读  那么就只能读取该属性的 值而不能进行赋值更改
如果设置只写  就不输出显示结果  但是可以进行操作    就比如在修改密码  就不会显示你的原来的密码   而是你输入之后
进行判断  然后直接就改了   提示修改成功

将类变为只读或者只写方法,或者只读只写
 在方法外操作都用方法名     在方法内操作都用类属性值
 
一般类属性 设置私有   如果不设置私有属性  用封装也就没意义了
只读只写设置public
如果  读写都设置了   就和平常没区别了  但是只设置一个属性就能实现效果
只读属性要有返回值  ,在其他地方传值就会报错   ,但是在只读类 的只读 方法里 传可以  ,出了只读的方法外都不可传
解析: 不加条件的封装
  // set=> num=value  就是返回的意思                 把外面数据通过给Num返还 num       
// get=>num    就是只读的意思 
 private int num;    //定义私有 只能本类调用
        public int Num {   get => num; set => num = value; }  //外面调用用Num封装属性    封装属性也能加private
 //   public int Num { private  get => num; set => num = value; }   //意思 就是 Num只能 在本类方法才能读 外面不能读    但是 Num 在外面可以写
 //   public int Num {   get => num;  private  set => num = value; }  //意思相反  在外面能读 但是不能写  ,只能本类可以写
 
 
列    给访问器加条件
  public int Ss {
            get
            {
                for (int i = 1; i < 10;i++)
                {
                    ss+=i; 
                }
//把结果返回给 ss 
                return ss;
            }
        }
  
  
//设置只写  不需要有返回值 但是在其他任何地方都没法看到这个值页没法输出      ,但是可以进行值得操作等等就是不能显示
  如果非要显示可以用其他值显现这个值
列:
     set
        {
                for (int i = 1; i < 10;i++)
                {
                    ss+=i;
                }              
            }
 
案例:   
 

列:
 class example
    {
        // 读写的属性
        public int ReadWrite
        {
            set;
            get;
        }
        // 只读的属性
        public int onlyRead
        {
            private set;
            get;
        }
        // 只写的属性
        public int onlyWrite
        {
            set;
            private get;
        }
        // 私有字段与下面的属性是关联的。
        private int _choseValue;  //私有属性  只有类里可以调用
       
  
  public int choseValue   把_choseValue属性转变成方法    直接操作choseValue方法 就是在操作_choseValue
        {
            set  //只写属性
            {
                if (value > 100)   判读如果输入的值  小于100就0   大于就  100
                    _choseValue = 100;
                else
                    _choseValue = 0;
            }
           程序从上到下执行的   只写完了     往下运行
     get   // 只读     把辅完值得属性返回成只读
            {
                return _choseValue;   
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            // 观看属性的过滤作用
            var a = new example();
            a.choseValue = 101;   给此方法赋值  也就是 给_choseValue赋值
            Console.WriteLine("{0}", a.choseValue);    返回结果
            a.choseValue = 91;
            Console.WriteLine("{0}", a.choseValue);
            Console.ReadKey();
        }
    }
 
结果
100
0
 
posted on 2019-07-24 08:59  回忆,  阅读(92)  评论(0)    收藏  举报