NET 2.0-4.5 版本新特性

.NET 2.0-4.5 版本新特性

1 .NET 2.0 新特性—泛型

自定义定义泛型

class MyList<T>
    {
        private T[] arr;
        public MyList(int size)
        {
            arr = new T[size + 1];
        }
        public void set(int index, T value)
        {
            arr[index] = value;
        }
        public T get(int index)
        {
            return arr[index];
        }
    }

简单实用案例

//.net2.0 泛型特性
    MyList<int> list = new MyList<int>(3);
    int number1 = 10;
    int number2 = 20;
    list.set(0, 4);
    list.set(1, 5);
    list.set(2, 6);
    Console.WriteLine(list.get(0));

泛型中的约束

类型 介绍
T:struct 类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型
T:class 类型参数必须是引用类型,包括任何类、接口、委托或数组类型。
T:new() 类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。
T:<基类> 类型参数必须是指定的基类或派生自指定的基类。
T:<接口> 类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的
T:U 为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束。

一个约束为 struct的实例

class SwapDemo
    {
        
        public static void swap1<T>(ref T t1,ref T t2)where T:struct
        {
            T temp = t1;
            t1 = t2;
            t2 = temp;
        }
    }

2 .NET3.0 新特性----Lambda表达式

自定义Girl类

class Girl
    {
        public String Name { get; set; }
        public int Age { get; set; }
        public bool IsSingle { get; set; }

        public Girl(String name,int age,bool isSingle)
        {
            this.Name = name;
            this.Age = age;
            this.IsSingle = isSingle;
        }
        public void toString()
        {
            String msg = IsSingle == true ? "have" : "don't have";
            Console.WriteLine("I'm a {0}-years-old girl,{1},and I {2} boyfriend!", Age, Name,Msg);
        }
    }

通过Lambda查询出符合条件的结果

List<Girl> girls = new List<Girl>();
girls.Add(new Girl("Rose", 16, false));
girls.Add(new Girl("Milo", 23, true));
girls.Add(new Girl("YOYO", 21, false));
girls.Add(new Girl("HanMeiMei", 19, false));
IEnumerable<Girl> result = girls.Where(p => p.age > 18 && p.isSingle==false).ToList();
foreach(var girl in result)
{
    girl.toString();
}

3 .NET4.0新特性—关键字dynamic

dynamic关键字和动态语言运行时(DLR)是.Net 4.0中新增的功能。

dynamic dGirl = new Girl("test", 20, true);
dGirl.toString();
Console.WriteLine(dGirl.GetType());
Girl aa = dGirl;
aa.toString();

4 .NET4.5新特性—内置Zip操作类

自定义封装一个压缩解压zip方法

class ZipDemo
    {
    //压缩
    public static void zipDir(String sourceDir,String targetFile)
    {
        if (!System.IO.Directory.Exists(sourceDir))
        {
            System.IO.Directory.CreateDirectory(sourceDir);
            Console.WriteLine("create dir {0}....", sourceDir);
        }
        if (System.IO.File.Exists(targetFile))
        {
            System.IO.File.Delete(targetFile);
            Console.WriteLine("delete {0}....", targetFile);
        }
        ZipFile.CreateFromDirectory(sourceDir, targetFile, CompressionLevel.Fastest, true, Encoding.UTF8);
        Console.WriteLine("zip finished");
    }

    //解压
    public static void unzipFile(String targetFile,String targetDir)
    {
        String type = targetFile.Substring(targetFile.Length - 3);
        if (System.IO.File.Exists(targetFile) && type=="zip")
        {
            ZipFile.ExtractToDirectory(targetFile, targetDir);
            Console.WriteLine("unzip finished");
        }
        else
        {
            Console.WriteLine("error!");
        }
    }

    }
NET 2.0-4.5 版本新特性NET 2.0-4.5 版本新特性 QingJSun 发布了10 篇原创文章 · 获赞 3 · 访问量 209 私信 关注
上一篇:XgBoost推导与总结


下一篇:2021SC@SDUSC-Zxing(九):对前面提出的问题进行解答