zoukankan      html  css  js  c++  java
  • 为什么在属性中设置private set

    引言:  

      属性的引入来自C#的封装机制,也就是说对象的内部数据不应该由对象实例来直接访问,我们可以使用传统的Get和Set方法,来封装字段,C#为我们提供了语法糖,也就是属性。属性包括get和set,分别用来访问数据和修改数据,实际上编译器也同样会把属性编译成两个方法,但是在代码中经常会遇到private set的用法,代码如下:

    1     public class Test
    2     {
    3         private string name;
    4         public string Name
    5         {
    6             get { return name; }
    7             private set { name = value; }
    8         }
    9     }

    为什么引入private set?

      有时候,我们并不希望由实例对象在外部,轻松的修改内部字段的值,如t.Name="SharpL",目的是为了保护内部数据。

    怎么实现的保护?

      将set设置成为string,实际上也就是将set方法设置成了私有方法,C#中对象是无法访问类中的私有成员的,所以下面的代码将无法通过编译,如图:

    如何修改数据呢?

      通过构造函数,或者其他公共方法,代码如下:

    1         public Test()
    2         {
    3             name = "SharpL";
    4         }
    5         
    6         public void  DoSth()
    7         {
    8             name = "LSharp";
    9         }

    参考:

      private set和不设置set的区别

      

  • 相关阅读:
    随笔(二十三)
    随笔(二十二)
    随笔(二十一)
    Python3——2019年全国大学生计算二级考试
    IP组播-PIM协议
    PIM-DM实验
    组播基础原理——IGMP
    路由器反射与联盟
    路由过滤&路由引入实验练习
    有道云免会员更换背景图
  • 原文地址:https://www.cnblogs.com/SharpL/p/4625612.html
Copyright © 2011-2022 走看看