這裡只記錄c#的特色地方,想來本科專攻c++跟圖形程式設計,真心沒想到半路殺出來個unity還特麼用了c#,所以嘛,最近惡補這方面的東西,把跟c++相似的地方看看就好,這裡把c#的好東東都記錄下,有一些還挺有逼格的說,希望能有幸成為高手!
1、params關鍵字
本關鍵字在於可變長引數的利用,比如
static void countnumbers(params int vals) " , val); }
} 呼叫的時候可以傳入任意數量的數字,比如countnumbers(1,2.3);
2、傳入引用
此處需要加ref
static void doit(ref int val )
在這個地方,傳入乙個const型別的變數就會變成非法的,因為const無法被改動,未賦值變數也不允許傳入,個人猜測應該是c#的記憶體機制,沒有用到或者複製的變數是不會去分配記憶體的。
傳入形式:doit(ref param);
3、out引數,傳出引用
這個引數代表傳入乙個引數之後,會在函式裡做修改,然後傳出,與ref相似,但是傳入必須是乙個未初始化的變數,否則如果已初始化,本變數在傳入函式時候會被清理為空
static void func(out int a);
4、引數作用域神奇版
int m;
for(int i = 0;i < 9;i++)
這裡在迴圈過後,是無法看到m的值的,因為m的記憶體是在迴圈中分配的,再迴圈中分配的記憶體,到了迴圈之外就會釋放掉,就好比區域性變數,這也是c#做出的很好的優化,所以需要有乙個標準:變數在宣告的時候就必須初始化!
5、委託
其實委託就是一種函式指標,宣告形式如下
delegate
double
processdelegate
(inta);
賦值跟執行的時候如此:
static
double
mult
(inta)
", a);
return
0.0f;
}processdelegate
process
= new
processdelegate
(mult);
process(1
); 這個可以用來進行做監聽者模式
6、物件導向
繼承的時候,基類必須在介面類前面
public class myclass:base,interclass
介面定義:
public inte***ce myinter
型別建構函式,如果宣告為private的建構函式,可以用來作單例模式,防止生成新物件
對於析構函式,會先呼叫本類析構,之後呼叫父類析構,最後呼叫object的finalize函式進行清理
類內變數定義:
1、readonly關鍵字 public readonly int myint = 17;這樣限制唯讀
2、virtual 方法可以重寫
3、abstract 方法是虛方法,子類中必須實現
4、override 方法重寫了乙個基類的方法
public
virtual
void
dosth
()
}public
class myclass:mybaseclass
}如果想讓重寫到此為止,即導致myclass的子類無法重寫dosth的話,就需要加入sealed關鍵字
public
override
sealed
void
dosth
()
5、訪問器
private
intmyint;
public
intmyint
set
}6、隱藏跟過載
隱藏即baseclass中由函式a,
public
class
baseclass }
public
class basederivedclass:baseclass
}這樣的形勢下,無法進行多型,即無法用父類指標指向子類物件的方法來實現呼叫子類函式。但是子類自己可以調到
其中new的含義就是指重寫,否則會報警告。
在這裡插一嘴:
a、重寫:即在函式多型性中應用,子類重寫父類的虛函式
b、過載:利用函式的傳入引數不同而不同
c、隱藏:在子類中重新寫一遍父類的方法,用new來宣告,不具有多型性
不管是隱藏還是重寫,在子類中都可以先呼叫父類的對應函式,然後在寫自己的內容,就好比cocos2d-x中的onenter,可以先呼叫父類的onenter,再寫自己的
public
class
baseclass
}public
class basederivedclass:baseclass
}
指標(心路歷程)
2019 3 10 許多初學c 語言指標的人剛開始會理不清思路,即使有教材書在比上也會一頭霧水,我也是剛入門,給一下我的想法。指標,簡單來說就是乙個存放位址的變數。你可一聯想門牌號和房子的關係。c語言的指標,主要兩種運算子。和 可以簡單理解為取值,而 可以理解為取址。例如char cp ch cp存...
心路歷程 20161118
171219我王老五又回來水題了!由於種種原因 比如不想參加本班只有四人參加的月考 本wc都去不了的蒟蒻回來準備,省選了,爭取拿到胸牌233.昨天因為不出去培訓,還被教練教育了一番quq 20天 期間單個的晚上刷水題 各種演算法的基本思想和裸的 實現 不追求比較深的內容。難度什麼的不好說 比如kmp...
踏上心路歷程。。。
其實我一直不喜歡把自己的心情筆記寫在部落格上,總覺的有點涉及隱私,加上我這人比較害羞 因為某人去年我連續好幾個月每天不間斷寫自己每天的心情筆記,不過現在再也沒機會因為某人而寫了,但這段經歷卻讓我習慣了寫些心情筆記,因為通過寫心情筆記讓我可以總結自己的學習和心靈感悟,能讓我悟出一些新的體會,讓我的思想...