程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#類中的屬性應用總結(詳解類的屬性)

C#類中的屬性應用總結(詳解類的屬性)

編輯:C#入門知識

C#類中的屬性應用總結(詳解類的屬性)。本站提示廣大學習愛好者:(C#類中的屬性應用總結(詳解類的屬性))文章只能為提供參考,不一定能成為您想要的結果。以下是C#類中的屬性應用總結(詳解類的屬性)正文



private int dd; 
public int dd 

    get{ return xx*3;} 
    set{ xx = value/3;} 

沒有set的屬性是一種只讀屬性,沒有get的拜訪器是一種只寫屬性。
(1) get拜訪器用來前往字段或許盤算 並前往字段,它必需以return或許throw終結。

private string name; 
public string Name 

    get 
    { 
        return name != null ? name : "NA"; 
    } 

(2) set拜訪器相似前往類型為void的函數,應用value的隱式參數

private string name;  // the name field 
    public string Name    // the Name property 
    { 
        get 
        { 
            return name; 
        } 
        set 
        { 
            name = value; 
        } 
    }
(3) 拜訪器的限制
屬性拜訪標志可認為public,private,protected,internal,protected internal,由於拜訪器的拜訪限制必需比屬性的拜訪限制加倍嚴厲,所以

private int xx; 
      public int sxx 
      { 
          public get { return xx; }//error 
          set { xx = value; } 
      } 

不克不及對接口或許顯式的接口應用拜訪潤飾符,由於接口裡外面一切的默許是public的;
同時具有get,set拜訪器時,才許可應用拜訪潤飾符,而且只能有一個應用;
假如屬性有override潤飾的時刻,拜訪器潤飾符必需與被重寫的婚配。
拜訪器的可拜訪級別必需比屬性的可拜訪級別加倍嚴厲

懂得:
起首第四條最輕易想到,也是很公道的,究竟是核心的決議外部的。
其次,既然第四條可以懂得,那末假如只要一個拜訪器的時刻,拜訪器拜訪級別同等屬性,假如這個時刻再去指  定加倍嚴厲的拜訪級別,那末為什麼欠妥初在屬性上指定呢?
      這層次解了,那末為何必需同時具有get,set能力添加拜訪潤飾符就加倍明白了。

推理:
接口中屬性是public的,那末假如接口中只要一個get或許set的時刻,我們可以在繼續中指明另外一個拜訪器的屬   性。然則假如接口中同時具有get,set,那末依照派生和繼續的婚配性,這時候候就不克不及如許再指定拜訪器的拜訪限制了。

public interface ISomeInterface 

    int TestProperty 
    { 
        // No access modifier allowed here 
        // because this is an interface. 
        get; 
    } 


 
public class TestClass : ISomeInterface 

    public int TestProperty 
    { 
        // Cannot use access modifier here because 
        // this is an interface implementation. 
        get { return 10; } 

 
        // Interface property does not have set accessor, 
        // so access modifier is allowed. 
        protected set { } 
    } 

(4)可以用static 潤飾屬性,以便隨時拜訪

private static int counter; 
public static int Counter 
    { 
        get { return counter; } 
    } 
(5)屬性隱蔽

public class Employee 

    private string name; 
    public string Name 
    { 
        get { return name; } 
        set { name = value; } 
    } 


 
public class Manager : Employee 

    private string name; 

 
    // Notice the use of the new modifier: 
    public new string Name // use new to hide property in base class 
    { 
        get { return name; } 
        set { name = value + ", Manager"; } 
    } 

(6)virtual來潤飾屬性,派生類應用override來重寫屬性

public class Parent 

    public virtual int TestProperty 
    { 

        protected set { } 
        get { return 0; } 
    } 

public class Kid : Parent 

    public override int TestProperty 
    { 
        protected set { } 
        get { return 0; } 
    } 

(7) abstract 潤飾屬性,派生類來完成屬性

abstract class Shape 

    public abstract double Area 
    { 
        get; 
        set; 
    } 


 
class Square : Shape 

    public double side; 
    public override double Area 
    { 
        get 
        { 
            return side * side; 
        } 
        set 
        { 
            side = System.Math.Sqrt(value); 
        } 
    } 

(8)sealed 潤飾屬性,派生類不克不及修正屬性

(9)接口屬性
接口屬性不具有函數體

public interface Inters 

    string Name 
    {    
        get; 
        set; 
    } 

(10) 主動屬性
當屬性拜訪器中不須要其他拜訪邏輯時刻,便可以應用主動屬性,使代碼加倍簡練

public double TotalPurchases { get; set; } 
public string Name { get; set; } 
public int CustomerID { get; set; }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved