前端之前,先學學C# [誤

來源:互聯網
上載者:User

標籤:

因為課題的原因,現在還要先用一下Unity,Github上的源碼個個如此炫酷以至於沒有c#基礎的我根本看不懂……

買了一本c#入門對著敲代碼,現在多少懂一點了。比如下面這一段對泛型型別的編寫。

using System;using System.Collections.Generic;namespace CustomGenericType{    struct Point<T>    {        T x;        T y;        public Point(T x, T y)        {            this.x=x;            this.y=y;        }        public T X        {            get {return x;}            set {this.x=value;}        }        public T Y        {            get {return y;}            set {this.y=value;}        }//這個裡面value還是第一次見,大概就是說把setter的參數拿來用        public void Print()        {            Console.WriteLine("({0},{1})",x,y);        }    }}

 

好吧我根本不懂啥叫泛型型別,但是感覺這個東西就是做一個模板,裡面兩個變數,這兩個變數先不聲明什麼類型,反正啥類型都行,所以就叫泛型是吧?

裡面有幾點是之前沒看到過的

  • Point<T>以及下面的 T x; T y;因為是泛型所以也沒什麼可說的了,就把T當做接受類型的一個坑吧
  • Point(T x, T y)這個應該就是Point在外面用到的constructor吧,比如如果寫Point(int a, int b)?其實不是這麼寫的,常式裡面寫的是
Point<double> b=new Point<double> (12.3, 244.4);//對了,這裡直接寫小數,後面沒跟f,所以是double類型
  • getter and setter,呃,也是啊,getter and setter肯定不止objective c才有啊…… 不過比較有意思的是X和Y是大寫。然後如果要在外面用到get或者set的話呢:
a.x=2;//這樣子是不行的,會報錯說inaccessible due to protection level.a.X=2;//這樣子就ok了,因為這裡的X是之前聲明好的一個Setter and getter

 

 

總之呢這一段代碼敲完有幾個收穫

  • c#也是有getter and setter的(廢話),而且簡單粗暴的讀取和改寫一個class裡面的變數是非常不紳士的,通過Getter and setter來吧。
    •   改變大小寫也是一個給getter and setter起名字的好辦法呢
  • 泛型這個東西,還真是很有意思呢,這樣一套模板建起來就可以根據實際需要反覆去用了。嗯,這也就是所謂的提升代碼複用性?
  • 泛型型別的建立也是要像List,Dictionary那樣 Point然後<>再然後才是(),不要直接把類型放進括弧裡面了,話說放進去是為啥……

前端之前,先學學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.