c#基礎知識複習

來源:互聯網
上載者:User

標籤:

  平時寫代碼也就依照樣子畫葫蘆,重複著相同的工作,也很無聊,現在開始整理下,一些基礎知識,都已經快忘記光了,寫下來記錄下,平時還可以重溫下。

  什麼是屬性?

  比如:

  public class A{

    public int Id{get;set;}

    public string Name{get;set;}

  }

  上面是一個類,那麼我們要訪問的屬性,就是:

    A  model=new A();//調用類

    A.Id//Id就是屬性

  平時我們都是這麼來寫代碼的。分析下:官網說法:屬性結合了欄位和方法的多個方面。對於對象的使用者,屬性顯示為欄位,訪問該屬性需要完全相同的文法。對於類的實現者,屬性是一個或兩個代碼塊,表示一個 get 訪問器和/或一個 set 訪問器。當讀取屬性時,執行 get 訪問器的代碼塊;當向屬性分配一個新值時,執行set 訪問器的代碼塊。不具有 set 訪問器的屬性被視為唯讀屬性。不具有 get 訪問器的屬性被視為唯寫屬性。同時具有這兩個訪問器的屬性是讀寫屬性。

  官網的說法,還是蠻好的。一看就明白了。通俗點說就是通過get和set兩個東東去設定的熟悉,調用的話,對象中調用我們叫屬性,類中書寫,就是set和get的方法。

  好吧,我們會通常說屬性基本上就是欄位的應用了。

public class Date{    private int month = 7;  //"backing store"    public int Month    {        get        {            return month;        }        set        {            if ((value > 0) && (value < 13))            {                month = value;            }        }    }}
Date model=new Date();//Month=7,month=7;
model.Month=9;//Month=9,month=9;

當我們初始化model的時候,去執行Date類,那麼開始從上到下執行,month是一個private私人變數,只有內部訪問,也就是說外部(其他類型或者成員)不能直接調用,只有在Date裡面自己調用自己,那不就是說,我們只能在Date類裡面改自己的值了。
Month是public,聲明屬性的話,預設是public,不解釋了。看看裡面的get和set。
get就是去得到這個屬性的值,這裡的return month那麼Month是值就是month的值7了,set就是去設定這個值看看是否符合要求,這裡是 Month 值設定為 1 和 12 之間,那麼結果就是Month=7,month=7;
看看model.Month=9;這不就是去set嘛,好吧就是,那麼判斷是否是1到12之間,是的話,month=value。結果就是:Month=9那麼此時的month呢?我們不是看到了month=value那麼month也是9了。

 知識點:類型就是enum(枚舉類型),class(類),interface(介面),struct(結構)等類型。類型成員如函數,成員變數等。

  我們現在開始看看,幾個不同的例子:

  1.mode.Month=125;//Month=9,month=9;

  2.如果Date裡面加上,

  public int num { get; set; }
  public string str { get; set; }

  這個不就是我們常常這樣子寫的,那麼初始化的話,int預設是0,str為null,後面一樣的原理set和get了。

  3.如果在Date裡面的Month裡面的set裡面設定:

   public int Month { get; set; }//初始化Month為0

  4.如果去掉month:那麼這樣子就會出錯。

public int Month
{
get
{
return month;
}
set
{
if ((value > 0) && (value < 13))
{
month = value;
}
}
}

  屬性結束了,想想還是很簡單不就是set和get。

  什麼是繼承?

  概念什麼自己去百度吧,我的理解就是父類和子類,比如:

  class A{//父類

  ****一些方法屬性****  

  }

  class B:A{//子類

  ****一些方法屬性****

  }

  B既然繼承了A的所有方法和屬性,那麼我就直接用吧,當然每個人都有秘密,A也不例外,A也有一些不想告訴你的,那麼A就private了,B說我想看private的,A說抱歉哦不給你看哦。

  關鍵點:

  1.子類擁有父類非private得屬性和功能;
  2.子類具有自己的屬性和功能,即子類可以擴充父類沒有的屬性和功能;
  3.子類還可以以自己的方式實現父類的功能(即方法重寫)。

  當然還有protected這個東東,protected修飾符表示繼承時子類可以對父類有完全訪問權。

  

  class B:A{//子類

    public B():base();//子類構造方法需要調用父類同樣參數類型的構造方法,用base關鍵字代表父類

    ****一些方法屬性****

  }

  對於調用父類的成員,可以用base關鍵字。

  構造方法:B的構造方法就是B(),那麼A的就是A()這個c#就是預設的,但是我們可以根據我們的要求去書寫自己的構造方法,比如在A中寫一個帶參數的構造方法,如:A(string name)

  如果是繼承怎麼寫,很簡單就是:

     public B(string name):base(name){

  }

  就是這麼的任性。

  如果理解有誤,請指出。

 

  

  

c#基礎知識複習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.