zoukankan      html  css  js  c++  java
  • 【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。

  • 相关阅读:
    swift2.2当中的inout参数的使用
    Swift的7大误区
    Swift 设计指南之 编程规范
    我为什么用 SQLite 和 FMDB 而不用 Core Data
    ios学习笔记——代理设计模式
    ios学习笔记——UIImagePickerController
    ios学习笔记——保存图片到相册
    KVC中setValuesForKeysWithDictionary: (转载)
    ios学习笔记——GCD简介
    ios学习笔记——操作队列NSOperation的基本操作
  • 原文地址:https://www.cnblogs.com/SharpL/p/4549743.html
Copyright © 2011-2022 走看看