.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!");
}
}
}
QingJSun
发布了10 篇原创文章 · 获赞 3 · 访问量 209
私信
关注