天天看点

.NET Framework各个版本(1.0 - 2.0)

.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反编译结果:

.NET Framework各个版本(1.0 - 2.0)

提到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,它会生成如下三个文件。

.NET Framework各个版本(1.0 - 2.0)

我们打开 FileSearch.Designer.cs 文件,可以看到自动生成的FileSearch类

.NET Framework各个版本(1.0 - 2.0)

再打开 FileSearch 文件,会发现这儿也有一个FileSearch类

.NET Framework各个版本(1.0 - 2.0)

为了验证partial的作用,我们可以将它删除,编译器马上就会报错。。

.NET Framework各个版本(1.0 - 2.0)

参考资料:

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:基础类库

继续阅读