標籤:
因為課題的原因,現在還要先用一下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# [誤