Main()方法
每一個C#可執行文件(如控制台程序、Windows程序和Windows服務)都必須有一個入口點——Main()方法(注意M大寫)。
這個方法必須是類或靜態方法,並且返回類型必須是int 或 void。不過給這個方法定義什么訪問級別並不重要,一般定義為public,不過你要是把它定義成了private,你會發現它還是能夠運行的。
同一個程序中只能有一個Main()方法,如果你一定要定義好幾個Main方法,你就得明確告訴編譯器 哪個Main()方法才是程序的入口。
另外,Main()方法也是可以有參數的:public static int Main(string[] args) {}
- 變量
C#的變量必須初始化,這是C#強調安全性的一個重要例子。大多數編譯器會把沒有初始化做為一個警告處理,但是C#編譯器會把它當做一個錯誤處理。這樣,可以防止我們無意中從其他程序遺留下的內存中獲取到垃圾值。
C#通過兩種方法保證變量進行初始化:1.對於類或結構中的字段,如沒有顯式初始化,在創建他們的時候會賦給它們一個默認值;2.對於方法中的局部變量,則必須先進行初始化,然后才能在后面的語句中使用它們的值。
C#中實例化一個對象,必須使用new關鍵字。
- 類型推斷(匿名類型)
類型推斷:var myAge = 19;//編譯器可以根據變量的初始值“推斷“變量的類型;與Javascript的變量的申明一致啊
使用類型推斷需要遵守這幾條規則:1.變量必須初始化,不初始化無法判斷類型的;2.初始值不能為空;3.初始化器必放在表達式中;4.不能把初始化器設置為一個對象,除非在初始化器中申明一個新的對象。
- 變量的作用域
1.只要類在某個作用域內,其字段(成員變量)也在該作用域內;2.在for、while等類似的語句中申明的局部變量存在於該循環中;3.局部變量在於申明該變量的塊語句中,或方法結束的右大括號之前的作用域內
C#在變量之間有一個基本的划分,它把類型級別的申明看作字段,而把方法中申明的變量看局部變量
- 常量
1.常量必須在申明的時候初始化;2.常量的值必須在編譯時用於計算,所以從一個變量獲取的值給常量 賦值是行不通的;3.常量總是靜態的,所以不請允許用static修飾常量;4.使用常量可以程序更加易讀、易修改、避免出現錯誤的機率。
- 數據類型
C#把數據類型分為兩種:值類型和引用類型。值類型存儲在堆棧中,而引用類型存儲在托管堆上。
C#中有15個預定義類型,其中 13個是值類型,2個引用類型(string和object),大多數C#數據類型,包括我們定義的類,都是引用類型。
在C#中,所有的數據類型都以與平台無關的方式定義,如:int總是32位帶符號的整型,short有16位長,long有64位長,這與C++有很大的差異。
decimal類型,128位的高精度,專為財務計算而設計,充分彌補的double類型的不足。
string雖然是引用類型,但是在操作上還是有 一些區別。例如:字符串是不可改變的,修改其中一個字符串,會創建一個全新的對象,而另一字符串不發生變化
string s2 = s1;
Console.WriteLine("s1 is " + s1);
Console.WriteLine("s2 is " + s2);
s1 = "another string";
Console.WriteLine("s1 is now " + s1);
ConsoletWriteLine("s2 is n°w " + s2);
輸出結果:
s1 is a string
s2 is a string
s1 is now another string
s2 is now a string
- 流控制
C#中的goto語句有兩個限制:1.不能跳進循環中 ;2.不能退出finally塊。和C++一致
- 命名空間
命名空間提供了一種組織類和其他類型的方式。與文件和組件不同,它是一種邏輯組合,而不是物理組合。所以可以一同一個程序集中使用不同的命名空間,也可以在多個程序集中定義同一個命名空間的類型。
建議在一個項目開始之前,就定義命名空間的層次定義。一般比較接受的格式是這樣子的:公司名.項目名.系統的各大部分。公司應當花一些時間開發一種命名空間模式,這樣其開發人員就可以快速定位到他們所需要的功能上。
如果命名空間的名字很長,別忘了給它起個別名:using alis=namespaceName;
- 注釋
C#的注釋方式使用傳統的C語言風格的注釋,單行用// ,多行用 /* */ 。需要注意的是,可以把多行注釋用在代碼之中,雖然並不推薦這么使用:
Console.WriteLine("this is a book"/*向控制輸出一句話*/);
當然,C#還有一種更強大的注釋 /// 。用這樣的一條語句,C#的編譯器就可以把這種注釋從代碼文檔中抽取出來,存入一個XML文檔之中:
csc /t:library /doc:MathLibrary.xml MathLibrary.cs
讓我解釋一下:csc就是編譯器了;/t:library /doc:MathLibrary.xml 是一個參數,注意中間的空格,MathLibrary.xml 是要生成的XML文檔的名字;MathLibrary.cs 是什么我不想再解釋了
- C#預處理器指令
使用預處理器指令可以禁止編譯器編譯代碼的某一部分。如果計划發布兩個版本的代碼,即基本版本和擁有更多功能的企業版本, 就可以使用這些預處理器指令。需要注意的是C#中的預處理器指令可不像C++那么豐富,它們的使用也並不頻繁,常見的預處理器指令如下:
#define和#undefine :定義一個符號(或者說變量也行啊,我習慣叫符號)。undefine就是刪除定義過的符號
#if #eif #else #endif :功能和C#中的流程處理語句一樣的,很少用到
#warning #error :編譯器遇到它們會分別差生警告和錯誤
#region #endregion :把一段代碼標記為給定名稱的一個塊,最有用的一組指令就是它啦,美化代碼必用!
- C#編程規則
1.標識符規則:必須以字母或下划線開頭;不能使用關鍵字做標識符,如果非要用,請在標識符前加@,例:int @abstract;標識符也可以使用Unicode字符,用語法\uXXXX表示,如: _Identifier 與 \u005fIdentifier 是一樣的定義。最的上圖一張:
要認真理解這上面所有的關鍵字,理解了,C#語言這一塊就算是基本過關了。
2.用法約定:定義變量時不使用任何前綴;定義名稱、命名空間的風格應該保持一致,名稱不應該與任何關鍵字發生沖突;字段應該總是私有的;
這一章介紹的內容都是一些C#基礎的東西,不過細細總結,發現需要注意的東西還真不少,希望對看到這篇博文的人有所幫助.