微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.Net Framework 3.5中的新增特性

一、.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 

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐