變數的初始化和範圍
初始化
C#有兩個方法可以一確保變數在使用前進行了初始化:
範圍
如果局部變數範圍衝突,報CS0136錯。
欄位與局部變數衝突,隱藏掉欄位,訪問被隱藏的執行個體欄位用this關鍵字,靜態欄位使用object.fieldname。
常量
常量的特點:
常量的優點:
預定義資料類型
實值型別與參考型別
概念與儲存方法的區別,參考第一章。
參考型別
要建立對象必須使用new關鍵字,將一個參考型別賦值給另一個參考型別得到的只是它的地址,會隨著它的更改而更改。如:
Test x,y; x testX = new Test(); y testY = x; testX.value =1; //這條語句執行後testX與testY的value屬性的值都會為
CTS類型
C#認可的基本預定義類型並沒有內建在C#中,而是內建於.NET Framework中。
decimal不是.NET Formework中內建類型,會造成效能損失。
bool類型不能用0來表示false,非0表示true。
所有內建類型都繼承Object類型。
string 的不可變性:如上述代碼中的testX和testY如果他們是string類型,當testX所指向的string改變時,會重新在託管堆中建立出一個新的string並指向它,testY所指向的值也就不會被更改。
流量控制
條件陳述式
if ,else if,else。
switch語句
case語句的值必須要是常量運算式,不允許使用變數。
與C++的區別:啟用了前一個case不會自動啟用後一個case,且每一個case必須用break否則報錯;可以把字串作為測試變數。
可以使用goto "標籤"經行跳轉。
case為空白則不需要break。
迴圈
for 與 while的區別:for適合可預測次數的迴圈,while適合不可預測次數的迴圈。
foreach
要實現foreach的遍曆,類中就必須實現IEnumerable介面。
foreach中不能改變每一項的值。
跳躍陳述式
goto
break
跳出當前迴圈
continue
跳過此次迴圈
return
退出當前方法
枚舉
一旦代碼編輯好,枚舉就成為基本類型。
名稱空間(命名空間)
與檔案或組件不同,名稱空間是一種邏輯組合,而不是物理組合。
一般名稱空間可接受的格式為CompanyName.ProjectName.StstemSection。
名稱空間別名的文法:
using slias = NamespaceName;
命名空間修飾符為 “::” 。
1 //using System; 2 using TestSystem = System; 3 4 namespace 命名空間別名 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 TestSystem::Console.WriteLine("This is a C# Progam"); 11 TestSystem.Console.ReadKey(); 12 } 13 } 14 }
命名空間別名示範
先行編譯
#if #elif 支援一組邏輯運算子“!”、“==”、“!+”、“||”。
C#編程規則
標識符規則
使用者約定
規則應該是一個正確的決策,而不是一種束縛。
命名規範
Pascal:名稱空間、類、函數名。
Camel:類中的欄位(最好加“_”為首碼能更直觀的知道這是個欄位)、方法的參數。
名稱風格
名稱/命名的風格應當盡量保持一致。
命名空間的名稱
命名空間是.NET區別共用組件中對象名的唯一方法。
Microsoft建議使用如下名稱空間:<CompanyName>.<TechnologyName>
名稱和關鍵字
略
屬性和方法的使用
如果該對象的外觀像一個對象,就用屬性來表示它,即:
用戶端醫改能讀取它的值,最好不要使用唯寫屬性。
讀取該值不應該花他長時間。
不應有負面效應。
可以按任意順序設定屬性。
順序讀取屬性也應該有相同的效果。
欄位的用法
欄位總應該是私人的。
2016-05-07 22:29:18