Skip to content

Latest commit

 

History

History
99 lines (61 loc) · 3.26 KB

C#知识整理.md

File metadata and controls

99 lines (61 loc) · 3.26 KB
  1. C# 函数传递地址的方式有

    static void AddSum(ref int i, int j)
    {
       i += j;
    }
    
    // 调用
    AddSum(ref a, b);
  2. C# 中的数据类型分 值类型引用类型.

    ① 值类型: 直接存储数据的值, 保存在内存中. 一些预定义简单类型, 例如: int, float, bool, char 都是值类型, 另外 enum, struct 也是值类型

    ② 引用类型: 存储对值的引用, 实际上存储的就是一个内存的地址. string, 数组,class, interface, 委托封装 都是引用类型,其中 string 是比较特殊的引用类型

  3. C# 泛型编程使用 where 约束

     约束                说明
     T: struct          类型参数必须是值类型. 可以指定除 Nullable 以外的任何值类型
     
     T: class           类型参数必须是引用类型,包括任何类、接口、委托或者数组类型
     
     T:new()            类型参数必须具有无参数的公共构造函数. 当与其他约束一起使用时, new()
                         约束必须最后指定
     
     T:<基类名>           类型参数必须是指定的基类或派生自指定的基类
     
     T:<接口名称>         类型参数必须是指定的接口或者实现指定的接口. 可以指定多个接口约束. 约束
                         接口也可以是泛型的
     
     T: U                为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数.
                         这称为裸类型约束
    
  4. C# params 关键字

    在 C# 中, 使用 params 关键字可以给一个方法 (method) 传递数量可变的参数 ( paramter ), 类似于python 中的 *arg

    注:

    params后面的参数类型必须是一个数组

    params后面不允许再有其他参数

    ③ 一个方法的申明中只能又一个 params 关键字

    传递方式:

    ① 用逗号分隔的一串参数

    ② 一个一维数组

    ③ 空参数, length 为 0

  5. C# 的装箱和拆箱

装箱是将值类型转换为引用类型; 拆箱是将引用类型转换为值类型

  1. 异步代码要点:

① 异步代码可用于 I/O 绑定和CPU绑定代码

② 异步代码使用 Task<T>Task, 它们是对后台所完成的工作进行建模的结构

async关键字将方法转换为异步方法, 这使你能在正文中使用 await关键字

④ 应用 await 关键字后, 它将挂起调用方法, 并将控制权返还给调用方,直到等待的任务完成

⑤ 仅允许在异步方法中使用 await

  1. Lambda 语法
// 表达式写法
(input-parameters) => expression
    
// 语句写法
(input-parameters) => { <sequence-of-statements> }
  1. 三种委托类型
1. Func 参数数量可变, 但必须要有返回值
2. Action 参数数量可变, 无返回值
3. Predicate 参数数量可变, 返回值类型必须为 bool