C#基礎程序員
一、棧存地址和值類型,堆存對象數據。性能
二、var,編譯器類型推斷spa
三、不能用從變量中提取出來的值來初始化常量,若是須要這麼作,應使用只讀字段;.net
四、常量老是隱式靜態的,const關鍵字:code
1)使用易讀取名稱,便於閱讀;對象
2)便於程序(業務)邏輯變動,好比稅率SalesTax=6%;內存
3)避免程序犯錯,如別處賦值則編譯器報錯。ci
五、C#數據存儲:值類型存儲在堆棧(Stack)中,而引用類型存儲在託管堆(Managed Heap)中。CLR會作內存管理,調用垃圾回收期實現內存回收。
六、C#有15個預約義類型,其中兩個引用類型(string 和 object),13個是值類型。文檔
1)C#中的int 聲明的其實是.Net 結構System.Int32的一個實例,看起來很深奧,但其意義深遠:這表示在語法上,能夠把全部的基本數據類型當作支持某些方法的類。例如:int i=10;string s=i.ToString();字符串
2)C#的decimal類型不是基本類型,計算時使用該類型會有性能損失。28位(128位的高精度十進制數表示法)decimal d=12.30M;或者decimal d=12.30m.
3)C# bool=true 或false:若是試圖用0表示false,非0表示true,就會報錯。
4)Byte(無符號)、sbyte(有符號),標準8位類型,
5)字符類型:char 表示一個16位的Unicode字符
七、Object類: 是C#和.net的根類型:例如堆棧中的值類型對象經過object裝箱到堆中.實現了一些基本方法,能夠重寫,如Equals()、GetHashCode(),GetType()和ToString().
八、C# string其實是.Net 類System.String,是個引用類型。但又會體現值類型的字符串通常和直觀的字符串規則特色,是經過運算符重載實現的。如:string s1="a string"; string s2=s1;s1="Another string";結果:s1="Another string" s2="a string"
九、字符串:經過@字符消除轉義字符「\」,$字符串插值功能
十、使用if語句的一個重要指導原則就是:
1)只有語句和if語句寫在同一行時,才容許程序員不適用花括號。遵循之,程序員在添加第二個語句時不太可能不添加花括號。
2)比較好的習慣:都要加花括號,不管幾行邏輯語句。(若是沒有else。。。)
3)值比較== 常值置於前 if(0==j)
十一、Switch語句:能夠包含一條default語句。任何兩條case都不能相同,不然編譯器報錯:break可用
const string england="uk";
const string britain="uk";
switch(country)
{
case england:
case britain://編譯會報錯
language="English";
break;
}
十二、循環for, while ,do...while,foreach(不能改變集合中各項的值,不然不能編譯,如改變應使用for循環),break、Continue 可用
但這樣是能夠的:
foreach (var item in resultList)
{
Apple a = item as Apple;
if (a != null)
{ a.Color = "Red"; }
}
1三、return
1四、枚舉:是用戶定義的整數類型,枚舉實例是一組易於記憶的整數值。C#中,枚舉的真正強大之處是它們在後臺實例化爲派生自基類System.Enum的結構。一旦代碼編譯好,枚舉就成爲基本類型,與int相似。
1)能夠檢索枚舉的字符串表示:
public enum TimeOfDay
{
Morning = 0,
Afternoon =1,
Evening =2
}
TimeOfDay time=TimeOfDay.Evening ;TimeOfDay time2=(TimeOfDay)Enum.Parse(typeof(),TimeOfDay,"afternoon ",true);
1五、名稱空間 namespace,能夠嵌套,using,別名 using alias=NamespaceName;
1六、使用註釋:源文件的內部註釋:單行// ,多行/*...*/
1七、XML文檔 根據特定註釋自動建立XML格式的文檔說明
1八、C#預處理器指令