一、.Net Framework 3.5中的新增特性:
1、隐式类型化的变量
例如 Var = 5;Linq就使用这个功能。
例如 public int MyProperty {get;set}
3、对象和集合初始化器
例如 MyStructure mystructure = new MyStructure() {MyProperty1 = 10,MyProperty2 = 20}
List<int> myInt = new List<int>() {1,2,3}
4、Linq,可以查询对象、数据集、sqlServer数据库、XML等
二、泛型类的特性
1、默认值:default关键字用于将泛型初始化为null或0
例如 T obj = default(T);
2、约束:定义泛型类型的类时,如果要求实例化的类必须实现某个接口时,可以加上约束。
例如 public interface ImyInterface {...}
public class BaseClass : ImyInterface {...}
public class MyClass<TBaseClass >
where TBaseClass : ImyInterface {...}
Main()
{
//只有实现了ImyInterface接口的类才能去声明MyClass泛型类
MyClass<BaseClass> myClass = new MyClass<BaseClass>();
}
还可以合并多个约束,例如:where T:I1,new(),意思是必须继承I1接口且必须有一个默认构造函数。
3、继承:泛型类可以继承泛型接口也可以派生于一个泛型类。
例如:public class MyClass<T>:IMyInterface<T>
public class MyClass<T>:Base<T>
public class MyClass<T>:Base<String>
4、静态成员:泛型类的静态成员只能在类的一个实例中共享。
例如:public class MyClass<T>
{
public static int x;
}
MyClass<int>.x = 1;
MyClass<String>.x = 2;
两个实例的值互不影响。
三、泛型接口
泛型可以定义接口,接口中的方法可以带泛型参数
例如:public interface IMyInterface<T>
{
int MyFunction(T val);
}
四、泛型方法
void func<T>(ref T val);
调用方式:1、func<int>(ref 1);
2、func(1);
五、泛型委托
例如:
public delegate T MyFunc<T>(T t);
public static T getVal<T>(T t,MyFunc<T> f)
{
T retVal = default(T);
retVal = f(t);
return retVal;
}
调用方式:
string j = MyClass.getVal<string>("liangyuhui",delegate(string s){return "I am " + s;});//j=I am liangyuhui
2、λ表达式方式:
int i = MyClass.getVal<int>(100,p => { return p + 100; }); //i=200
采用委托引用的方法,可以实现任何逻辑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。