zoukankan      html  css  js  c++  java
  • (原创)c#学习笔记10--定义类成员01--成员定义06--自动属性

    10.1.6  自动属性

      属性是访问时象状态的首选方式,因为它们禁止外部代码实现对象内部的数据存储机制。属性还对内部数据的访问方式施加了更多的控制,本章代码在多处体现了这一点。但是,一般以非常标准的方式定义属性,即通过一个公共属性来直接访问一个私有成员。其代码非常类似于上一节的代码,这是VS重构工具自动生成的。

      重构功能肯定加快了键入速度,C#还为此提供了另一种方式:自动属性。利用自动属性,可以用简化的语法声明属性,C#编译器会自动添加未键入的内容。具体而言,编译器会声明一个用于存储属性的私有字段,并在属性的get和set块中使用该字段,我们无需考虑细节。

      使用下面的代码结构就可以定义一个自动属性:

    public int MyIntProp 
    { 
        get; 
        set; 
    }

      甚至可以在一行代码上定义自动属性,以便节省空间,而不会过度地降低属性的可读性:

    public int MyIntProp { get; set; }

      我们按照通常的方式定定义属性的可访问性、类型和名称,但没有给get和set块提供实现代码。这些块的实现代码(和底层的字段)都由编译器提供。

      使用自动属性时,只能通过属性访问数据,不能通过底层的私有字段来访问,因为我们不知道底层私有字段的名称(该名称是在编译期间定义的)。但这并不是一个真正意义上的限制,因为可以直接使用属性名。自动属性的唯一限制是它们必型包含get和set存取器,无法使用这种方式定义只读或只写属性。

  • 相关阅读:
    [POJ 1417] True Liars
    [POJ 2912] Rochambeau
    [NOIP 2010] 关押罪犯
    [BZOJ 3365] Distance Statistics
    【BZOJ 2821】作诗
    【IOI 2011】Race
    【POJ 2828】Buy Tickets
    FATFS 文件系统
    w25q128 优化读写函数
    keil5编译时出现 MDK-Pro middleware is not allowed with this license
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/4957360.html
Copyright © 2011-2022 走看看