zoukankan      html  css  js  c++  java
  • C# 类的属性

    属性是一个方法或者一对方法。客户端看来是一个字段。

    定义属性

    public int StudyHours{

    //啥不写,默认有get;set; 和后备字段studyHours是private的

    get{

    return studyHours;

    }

    set{

     studyHours=value;

    }

    }

    命名约定,共有属性采用Pascal大小写形式命名。并且如果存在一个等价的私有字段则它采用camel大小写形式命名。以前看的书上用_foreName来命名字段。

    新手容易被大小写搞混,我一直就是,领导经常在面试中问别人写个属性,我每次都蒙圈。

    一个属性里没有set,就不能给这个属性设置值,那么这个属性就是只读的。没有get,就是只写属性。但这样对客户端代码的作者容易迷惑。一般情况下,最好用个方法代替。

    属性的访问控制符有助于控制属性的设置方式或者时间。

        public string Reason{

          get{return _reason;}//没有修饰符,那么get访问器具有属性的访问级别

          private set{_reason=value;} //外部类不能通过属性Reason给_reason赋值,只能读取其值。

        }

    上面代码也可以自动实现,简写为

      public string Reason{

        get;

        private set;

      }

    接下来书上提到了一个问题,我也怀疑过,叫内联,难道是inline?

    我们通过属性访问字段,而不是直接访问字段。这些额外的函数调用是否会增加系统开销,导致性能下降?

    答案不会的。C#代码会编译为IL,然后在运行时JIT编译为本地可执行代码。JIT Compiler可生成高度优化的代码,并在适当的时候随意地内联代码。(用内联代码代替函数调用)。如果实现某个方法或者属性仅仅是调用另一个方法,或者返回一个字段,则该方法或者属性肯定是内联的。

    但注意,内联 or not 是CLR决定的。不像C++的inline来控制哪些方法是内联的。

    属性就学到这里啦~下一节是构造函数,静态构造需要好好理解一下。

  • 相关阅读:
    Nodejs下载和第一个Nodejs示例
    永久关闭Win10工具栏的TaskbarSearch控件
    对称加密,非对称加密,散列算法,签名算法
    【转】TTL和RS232之间的详细对比
    zlg核心板linux系统中查看系统内存等使用信息
    Power BI后台自动刷新数据报错 The operation was throttled by Power BI Premium because there were too many datasets being processed concurrently.
    剪切板和上传文件内容获取
    CSS, LESS, SCSS, SASS总结
    文字程序
    electron 打包“ERR_ELECTRON_BUILDER_CANNOT_EXECUTE”
  • 原文地址:https://www.cnblogs.com/jin-wen-xin/p/4728019.html
Copyright © 2011-2022 走看看