.NET1.0与1.1新特性
公共语言运行库CLR 1.0
CLR(Common Language Runtime)公共语言运行时,是.NET运行的环境 为什么叫公共语言呢? 因为它能够运行多种语言,比如C#,VB,C++,F#等 在CLR上运行的是中间语言(MSIL),上述的语言能够被编译器编译成中间语言。
BCL类库
BCL(Base Class Library) 基础类库,为.NET开发提供了最基础的功能 它就在mscorlib.dll文件中,里面包含基础类型操作,集合,泛型,文件,网络,安全,线程等
mscorlib.dll反编译结果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLwklaNpXWU50MFR1Tqh2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyEzN0ITMwIjM4ETNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
提到BCL类库就不得不提到FCL类库,FCL包含BCL中的大部分实现,另外还包含我们常见的开发框架如:ASP.NET,WinForm,WPF,WCF,Web Services,SignalR等等 ,这些框架也是在BCL的基础上做出的扩充。
ASP.NET 框架
ADO.NET
.NET2.0新特性
公共语言运行库CLR 2.0
支持64位平台
泛型(Generic)
泛型的作用:类型安全,提高性能,保护类型,经常用于创建集合类
//泛型特性1:类型检查
List<int> list = new List<int>();
list.Add(2); //编译器报错
list.Add("a");
ArrayList array = new ArrayList();
array.Add(2); //编译器不会报错
array.Add("a");
int sum = 0;
for (int i = 0; i < array.Count; i++)
{
//虽然在编译阶段没有报错,可是在程序运行阶段却会抛出异常,因为字母无法转换为数字。。
sum += Convert.ToInt32(array[i]);
}
匿名方法(Anonymous Method)
可空类型(Nullable),在处理与数据库有关的数据类型时经常用到
//public string? Name { get; set; } //编译器会报错,因为引用类型本身就是可以为空的。。
public string Name { get; set; }
public int? Age { get; set; } //int为值类型,值类型不是可为空的类型,但Nullable将值类型拓展为可为空类型了
//public Nullable<int> Age { get; set; } //也可以这样声明
迭代器
部分类(Partial),通过多个部分定义类型,其后必须紧跟class, struct, interface
例如我们新建了一个Winform程序:FileSearch,它会生成如下三个文件。
我们打开 FileSearch.Designer.cs 文件,可以看到自动生成的FileSearch类
再打开 FileSearch 文件,会发现这儿也有一个FileSearch类
为了验证partial的作用,我们可以将它删除,编译器马上就会报错。。
参考资料:
https://blog.csdn.net/zhruifei/article/details/78499080
https://www.cnblogs.com/luointer123/archive/2011/09/17/2179671.html
https://www.cnblogs.com/cnki/p/8303444.html
https://blog.csdn.net/meplusplus/article/details/76762203
https://blog.csdn.net/yl2isoft/article/details/11701185
C#/.NET BCL:基础类库