加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.Net Framework 3.5中的新增特性

发布时间:2020-12-12 15:13:39 所属栏目:MsSql教程 来源:网络整理
导读:一、.Net Framework 3.5中的新增特性: 1、隐式类型化的变量 ???? 例如 Var = 5;Linq就使用这个功能。 2、自动实现属性 ???? 例如 public int MyProperty {get;set} 3、对象和集合初始化器 ???? 例如 MyStructure mystructure = new MyStructure() {MyProp

一、.Net Framework 3.5中的新增特性:

1、隐式类型化的变量

???? 例如 Var = 5;Linq就使用这个功能。

2、自动实现属性

???? 例如 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;
??????? }

???? 调用方式:

???? 1、匿名方法调用方式:

????????? 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?

???? 采用委托引用的方法,可以实现任何逻辑。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读