foreach(char c in str){ ... }switch-case:支持字符串常量?C#不允許fall-through?但case可以連起來寫C# 2.0 空接合:expr1?? expr2;(這是?:的某種簡化)C#支持預處理?靠
#region #endregion
方法和參數
using System;C# 4.0 可選參數(這一般不是C++才有的特性嗎)C# 4.0 命名參數(這是一般腳本語言中才有特性!)異常catch順序:從最具體到最一般?——是否應該看異常在代碼執行流程中可能出現的先後順序呢???int.TryParse(ageText, out ageVar) //見鬼,這不如Ruby靈活
類
this(=VB裡的Me)屬性是CIL中的一種顯式的構造:
.property instance string Name(){
.get instance string ClassA::get_Name() //引用實際生成的getter方法
C# 3.0 對象初始化器
集合初始化器:l = new List { ... }
this調用另一個構造器:恩,有點類似於C++的成員初始化列表,或者是Java的構造函數間調用C# 3.0 匿名類型:var p = new { Name="ABC", Age=20 };//不要濫用,可能有性能問題?靜態構造器:static ClassName() { ... } //這與Java的static{}相比,語法稍顯累贅了C# 3.0 擴展方法:定義一個static方法,模擬為對應類的成員函數(第1個參數聲明需加上this限定)——這只是一個編譯期特性,stconst vs. readonly(Java final?)C# 2.0 部分類 partial class A { ... } //不允許對編譯好的類進行擴展,用於分解實現代碼到多個文件——看來又是一個編譯期特性,stC# 3.0 部分方法:必須返回void?不允許out參數,但可以用ref
可在一個partial class裡聲明,在對應的另一個partial class裡實現?有點像C/C++了,哈
e.g. ... = from word in Keywords where !word.Contains('*') select word; //from在前,類似於XQuery的語法!from下的let子句(這可以避免重復創建相同的對象。。。)
from filePath in ... let file = new File(filePath) orderby file.Length, filePath select file;
from與select返回之間可以插入group操作:
... group word by word.Contains('*') into(延續) groups ...