1.有關簡潔:web
使用#region標記代碼區域,便於摺疊算法
2.有關命名:編程
正 |
誤 |
NumberOfArgumentsIn |
nargin |
根據含義而非類型命名設計模式
正 |
誤 |
ParcelName |
strParcelName |
不要用大小寫區分名稱數組
抽象基類 |
-Base |
接口 |
I- |
異常 |
-Exception |
事件參數 |
-EventArgs |
事件委託 |
-EventHandler |
特性 |
-Attribute |
泛型類型參數 |
T- |
i, j, k |
循環變量(類型:System.Int32) |
o |
System.Object |
s |
System.String |
e |
事件實參(基類:System.EventArgs) |
ex |
異常(基類:System.Exception) |
g |
System.Drawing.Graphics |
x, y, z |
Lambda表達式的形參 |
3.有關字面量app
[思考題2]框架
string s = "abcdeeg"; s[5] = 'f';
以上代碼在C++和C#中是否都合法?是否都有效?函數式編程
[思考題3]檢測一個字符串str是否以"abc"開頭,有兩種方法(不使用StartsWith):函數
str.SubString(0, 3) == "abc"; str.IndexOf("abc") == 0;
請問哪一種方法好,爲何? ui
CLR中的字符串是不可變類型,字符串分配是一項昂貴的操做。所以咱們有如下最佳作法:
函數式編程爲C#帶來了高可讀性的聲明式語法。循環是一種命令式語法,在聲明式語法中相應的是對集合的mapping操做。
如下代碼生成前100個徹底平方數:
var squares = Enumerable.Range(1, 100).Select(x => x * x);
返回int數組:squares.ToArray();
返回List<int>集合:squares.ToList();
如下代碼對集合foos中每一個元素執行DoSomething()成員方法:
foos.ForEach(x => x.DoSomthing());
如下代碼選出foos中大於100的元素:
var q = foos.Where(x => x > 100);
points中點按到原點距離排序:
var q = points.OrderBy(x => x.DistTo(new Point(0, 0)));
foos中平方最小的數:
double minSq = foos.Min(x => x * x); double min = foos.Distinct().Single(x => x * x == minSq);
foos中的數是否有大於100的(是否都大於100)
foos.Any(x => x > 100); foos.All(x => x > 100);
public class Tuple<T1, T2> { private T1 _item1; private T2 _item2; public T1 Item1 { get { return _item1; } } public T2 Item2 { get { return _item2; } } public Tuple(T1 item1, T2 item2) { _item1 = item1; _item2 = item2; } } public class TupleList<T1, T2> : List<Tuple<T1, T2>> { public void Add(T1 item1, T2 item2) { base.Add(new Tuple<T1, T2>(item1, item2)); } }
Button btn = new Button { Text = "Click me!", BackColor = Color.FromArgb(255, 255, 255) }; btn.Click += (sender, e) => MessageBox.Show("Hello!");
如下代碼編譯成相同IL:
// 1. Example Using clause: using (myConnection = new SqlConnection(connString)) { myConnection.Open(); } // 2. Example Try / Catch block: try { myConnection = new SqlConnection(connString); myConnection.Open(); } finally { myConnection.Dispose(); }
Func<Color, EventHandler> changeControlColor = x => (sender, e) => (sender as Control).BackColor = x; button1.Click += changeControlColor(Colors.Red);