C#语法基础
2015-11-02 17:05
211 查看
[b]泛型[/b]
1、default(T)可以返回T类型的空值,因为你不知道T是值类型还是引用类型,所以别擅自用null
2、泛型约束
很多时候我们不希望使用者太过自由
我们希望他们在使用我们设计的泛型类型时
不要很随意的传入任何类型
对于泛型类型的设计者来说,要求使用者传入指定的类型是很有必要的
因为我们只有知道他传入了什么东西,才方便对这个东西做操作
让我们来给上面设计的泛型类型加一个泛型约束
代码如下:
这样在使用SomethingFactory的时候就只能传入MyObj类型或MyObj的派生类型啦
注意:
还可以写成这样
where T:MyObj,new()
来约束传入的类型必须有一个构造函数。
[b]泛型委托[/b]
1、Predicate泛型委托
2、Action泛型委托
3、Func泛型委托
[b]匿名方法[/b]
new action(delegate(int param){
});
注:Lambda表达式更简洁
[b]Lambda表达式[/b]
(a,b)=>{}
[b]扩展方法[/b]
定义在静态类中的静态方法中,使用this在要扩展方法的类型前。
[b]迭代器[/b]
1、default(T)可以返回T类型的空值,因为你不知道T是值类型还是引用类型,所以别擅自用null
2、泛型约束
很多时候我们不希望使用者太过自由
我们希望他们在使用我们设计的泛型类型时
不要很随意的传入任何类型
对于泛型类型的设计者来说,要求使用者传入指定的类型是很有必要的
因为我们只有知道他传入了什么东西,才方便对这个东西做操作
让我们来给上面设计的泛型类型加一个泛型约束
代码如下:
public static class SomethingFactory<T> where T:MyObj
这样在使用SomethingFactory的时候就只能传入MyObj类型或MyObj的派生类型啦
注意:
还可以写成这样
where T:MyObj,new()
来约束传入的类型必须有一个构造函数。
[b]泛型委托[/b]
1、Predicate泛型委托
2、Action泛型委托
3、Func泛型委托
[b]匿名方法[/b]
new action(delegate(int param){
});
注:Lambda表达式更简洁
[b]Lambda表达式[/b]
(a,b)=>{}
[b]扩展方法[/b]
定义在静态类中的静态方法中,使用this在要扩展方法的类型前。
[b]迭代器[/b]
相关文章推荐
- (原创)c#学习笔记08--面向对象编程简介02--OOP技术02--继承
- 6.C#的循环语句
- Web安全之C#语法学习
- (原创)c#学习笔记08--面向对象编程简介02--OOP技术01--接口
- 【C#】构造函数和析构函数
- c#基础4
- VS2010、C#、Emgu CV配置 ; 在C#下使用OpenCV ; C#中使用OpenCV(Emgu CV)
- C#+AE 用MapControl加载栅格格式文件
- C# 计算时间差 用timespan函数
- C# 5.0 与 .Net 4.5 学习(四)SpinLock自旋锁&WaitHandle
- C#进阶系列——动态Lamada
- C#语法之比较
- c#MD5珍藏
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--静态和实例类成员
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义03--对象的生命周期--构造函数和析构函数
- C# KeepAlive的设置
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义02--一切皆对象
- (原创)c#学习笔记08--面向对象编程简介01--面向对象编程的含义01--对象的含义02--方法
- [C#]光标(cur/ani)转图片(Image)
- C#之封装和继承