【C#】读书笔记
一,C#對象初始化語法:
1 Product p = new Product() 2 { 3 Name = "小黃人", 4 Price = 34, 5 Description = "機智", 6 Category = "奢飾品", 7 ProductID = 0 8 };聲明對象嘛,應該有分號的。。。。
其實,我們在使用集合或數組的時候,早就使用過這種語法糖了,如:
1 List<int> tempList = new List<int> { 1, 2, 3 };?二、使用拓展方法
第三方類或者是沒有源代碼的類,可以通過用拓展方法來獲得所需的功能。
1 public static class ProductListExtension 2 { 3 public static decimal TotalPrice(this ProductList list) 4 { 5 decimal d = 0; 6 foreach (Product item in list.Products) 7 { 8 d += item.Price; 9 } 10 return d; 11 } 12 }注意,拓展方法所在的類必須是靜態類,拓展方法也必須是靜態方法。
調用的方法,與普通的方法使用方法一致,如下:
1 decimal temp = p.TotalPrice();?三、使用Lambda表達式
Lambda表達式以委托的方式簡寫方法體。
學習Lambda之前,先引入委托Func<T,Tresult>,用來封裝具有一個T類型參數,并返回一個TResult類型參數的方法,該委托可以作為其他方法的參數進行傳遞。這種寫法實際上就是不用自己定義委托。
參考:http://www.cnblogs.com/oneword/archive/2010/08/31/1813994.html
1 //Func首先是定義一個委托,委托所指向方法只有一個參數Prod,有一個返回值bool 2 Func<Product, bool> func = delegate(Product prod) 3 { 4 return prod.Category == "語文"; 5 }; 6 //用Lambda的方式來簡化委托的定義 7 func = prod => prod.Category == "語文"; 8 //或者是不聲明Func,直接把Lambda表達式作為參數傳遞給指定的以Func委托為參數的方法 9 foreach (Product p in ProductArray.Filter(prod => prod.Category == "語文")) 10 { 11 dd += p.Price; 12 }?四、臨時
DataTable dt=new DataTable();
dt.AsEnumerable()返回一個IEnumrable<T>對象,其泛型參數T為DataRow,此返回對象可用在LinQ表達式中。
EnumerableRow.Select()方法轉化原DataRow元素,示例代碼如下:
return dt.AsEnumerable().Select(row => new Person(){Name =Convert.ToString(row["Name"]),Age = Convert.ToInt32(row["Age"])}.ToList();上面代碼的作用是將DataTable(即dt)中的每一行(即DataRow)轉化成一個Person對象,最后生成一個Person的List。
轉載于:https://www.cnblogs.com/SharpL/p/4549743.html
總結
- 上一篇: 字符串比较
- 下一篇: C#下实现动态系统托盘图标