CLR、泛型、委托简介及简单使用

来源:互联网 发布:java中的注释 编辑:程序博客网 时间:2024/06/05 14:23

CLR

CLR是简写,全称是Common Language Runtime

是公共语言运行时 也叫做公共语言运行库

它和java的虚拟机一样,也是一个运行时环境,负责资源管理(内存分配,安全管理和垃圾收集等),并保证应用和底层操作系统之间必要的分离。

CLR监视各种各种的常见编程错误,包括数据元组越界访问、访问未分配的内存空间等这些

这种监视是有代价的,以牺牲性能为代价,微软公开承认的是,大概降低了10%的性能。但是会带来的好处是程序运行的稳定性以及可用性。这一点一直存在争议。


泛型

为什么要用泛型?

假如,我们有一个类。类里有个参数是string类型的。

假如值有时候是汉字,有时候是数字。

有时候呢,我们需要把string类型的数字转换成int型的。可能很多人觉得就是只需要一个简单的Convert.ToInt32(“123”);就能解决

但是其中涉及很多操作。比如:内部实现中,需要先把这个字符串类型“装箱”。把他转换成object类型  这个时候性能开销很大,而我们做商业性项目的时候,性能是一个很要命的东西。你的产品慢,客户就不用了。项目就黄了。所以说性能很重要,这是第一方面。当然有人说了,你建两个类不就OK了吗?一个放string,一个放int  

那么扩展一下,在一个很大的项目里,有非常多的类。这些类中有一些操作是通用的。我想要代码不写那么多,能够重用代码。

怎么办?

就需要泛型了。下面是理论,网上搜到的。

泛型:泛型是通过参数化类型来实现在同一份代码上操作多种数据类型。

 

这个T就是泛型。

这就定义了一个泛型类

一个public 变量 一个public方法,返回一个值的方法

 

这段代码 实例化了两次那个泛型类。

第一次, 传了一个int参数。 第二次,我传了一个string类型参数。

以下是输出结果

 

这样,我用了一个类,然后只用同一个一个方法,就可以实现多种功能。

以上就是泛型。可以大大提高代码重用率、提高性能的办法。


委托

委托呢,就是把函数当做参数来用

我们讲一个例子

 

中国人问好的方式是:美女,你好;
美国人问好的方式是:Girl,hello;
日本人问好的方式是:小沢マリア,こんにちは

那么我们用代码怎么实现呢

我们用一个函数的话
void function(string name)
{
     Console.WriteLine(name+",你好");
}

这个时候问题来了 我不知道你是哪国人啊

打招呼怎么知道你能不能听懂

这时候就用到了委托

用委托有三步

第一步

定义一个委托

定义委托用的关键字是delegate

 

不需要方法体,只需要把参数的类型和个数写进去就OK

 

第二步:写自己的需要用的函数

 

  static void show1(string name, int age)

        {

            Console.WriteLine(name + "今年刚刚" + age + "岁");

        }


需要注意的是,你自己写的函数,参数的类型、个数,必须保证和定义的委托一样

第三步

定义一个类,存储人的信息

 

三个变量一个方法

OK,那下面我们用一下委托。需要给这个委托附一个函数,就是刚才的show1

 

给委托赋值很简单,跟变量一样

 

赋一个函数,然后传参

 

 

一个委托可以赋多个函数,可以显示不同的东西。

0 0
原创粉丝点击