- MSN GMD Shanghai
-
2.0
-
泛型
- 实质:在程序中不指定具体类型,而是根据调用函数进行推断
- 推断时期
- 意义
- 迭代器
-
匿名方法
- ?Delegate
- 分布类/局部类型
- 可空(空属)类型
- 静态类
-
杂项技术
- 问号的演变
-
3.0 & 3.5
-
可爱的var
- 也可用作数组
- 仅限局部变量
- 初始化语句为表达式
- 自动推断类型
- Auto-implemented properties
-
隐型数组
- ?
- 对象和集合初始化器
-
匿名类型
- 意义
- 成员是编译器根据初始化器推断而来一些读写属性
- 继承System.Object
- new关键字
- 实质,编译器帮你生成
-
Extension Methods
- 在要使用的类中进行引用
- 规则
- 不改变源码为现有类添加实例方法
- public static void Foo(this string s)
- 继承,组合,反射
- 实质
- 优先级
-
Lambda Expression
- 2.0 中的应用
-
3.0
- list.FindAll(s=>s.Indexof("abc")>0);
-
格式
- (x, y) => x * y
- x => x * 10
- x => { return x * 10; }
- (int x) => x * 10
- () => Console.WriteLine()
-
格式要点
- 表达式的参数类型可以忽略
- 表达式的主体(body)可以是表达式,也可以是语句块
- 表达式传入的实参将参与类型推断,以及方法重载辨析
- 达式表达式和表达式体可以被转换为表达式树
-
Lambda表达式与委托类型
- L和D拥有相同的参数个数
- L的参数类型要与D的参数类型相同
- D的返回类型与L相同
- 转换
-
LINQ
- LINQ 的演变及其对 C# 设计的影响
- 表达式树 Expression trees
-
对象集合初始化器
- var a = new Point { X = 0, Y = 1};
- List<int> num = new List<int>{0,1,2,3};
- 按序赋值
- 按顺序调用ICollection<T>.Add(T)
-
语言发展方向
- 语义化更清晰
- 书点更方便
- C#发展轨迹
-
计算机不懂OO
-
面向过程
- 冯诺依曼体系
- 顺序执行
-
OO意义
- 人类思维的一次转变
- 面向过程缺点
- OO 优点
- 重用
- 人类思维,易维护
-
如何实现
-
在方法中加入一个新参数
- Python中self
-
?加这个方法是什么时间
- 静态方法实例方法
- 内存中的区别
- 程序运行,内存关系????
- 本质
- 题外话题:程序内存的分配
-
4.0
- Dynamically Typed Object
-
Named and optional parameters
- MVC
- Co- and Contra-Variance
- Compiler as a Service
-
Subtopic 5
- SortedSet<>