• C# Property机制


    可以把C#的property机制看成是C#在语言层面上对数据的封装。

    在使用Property时,可以把它当做一个Field使用。

    传统的C++中使用的方法类似于:

     1 using System;
     2 
     3 public class Customer
     4 {
     5     private int m_id = -1;
     6 
     7     public int GetID()
     8     {
     9         return m_id;
    10     }
    11 
    12     public void SetID(int id)
    13     {
    14         m_id = id;
    15     }
    16 
    17     private string m_name = string.Empty;
    18 
    19     public string GetName()
    20     {
    21         return m_name;
    22     }
    23 
    24     public void SetName(string name)
    25     {
    26         m_name = name;
    27     }
    28 }
    29 
    30 public class CustomerManagerWithAccessorMethods
    31 {
    32     public static void Main()
    33     {
    34         Customer cust = new Customer();
    35 
    36         cust.SetID(1);
    37         cust.SetName("Amelio Rosales");
    38 
    39         Console.WriteLine(
    40             "ID: {0}, Name: {1}",
    41             cust.GetID(),
    42             cust.GetName());
    43 
    44         Console.ReadKey();
    45     }
    46 }

    而使用property的方法为:

     1 using System;
     2 
     3 public class Customer
     4 {
     5     private int m_id = -1;
     6 
     7     public int ID
     8     {
     9         get
    10         {
    11             return m_id;
    12         }
    13         set
    14         {
    15             m_id = value;
    16         }
    17     }
    18 
    19     private string m_name = string.Empty;
    20 
    21     public string Name
    22     {
    23         get
    24         {
    25             return m_name;
    26         }
    27         set
    28         {
    29             m_name = value;
    30         }
    31     }
    32 }
    33 
    34 public class CustomerManagerWithProperties
    35 {
    36     public static void Main()
    37     {
    38         Customer cust = new Customer();
    39 
    40         cust.ID = 1;
    41         cust.Name = "Amelio Rosales";
    42 
    43     Console.WriteLine(
    44             "ID: {0}, Name: {1}",
    45             cust.ID,
    46             cust.Name);
    47 
    48         Console.ReadKey();
    49     }
    50 }

    这在一定程度上实现了封装与数据隐藏

    不设set方法即可将一个field视为只读,不设get方法即可将一个field视为只写。

    这样做的一个问题是,如果一个类有很多成员变量,设置get,set就会变得繁琐,因此C# 3.0引入了 Auto-Implemented Properties机制。

    使用方法如下:

    using System;
    
    public class Customer
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    
    public class AutoImplementedCustomerManager
    {
        static void Main()
        {
            Customer cust = new Customer();
    
            cust.ID = 1;
            cust.Name = "Amelio Rosales";
    
            Console.WriteLine(
                "ID: {0}, Name: {1}",
                cust.ID,
                cust.Name);
    
            Console.ReadKey();
        }
    }
    

      

  • 相关阅读:
    熟悉常用的HDFS操作
    爬虫爬取小说网站
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    综合练习:词频统计
    最近在学习多元分析,有空放上来分享
    机器学习基石作业一15-20题(Python实现)
    2018十月份
  • 原文地址:https://www.cnblogs.com/johnpher/p/2741361.html
Copyright © 2020-2023  润新知