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

    xiaoxiao2021-11-30  18

    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

     

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

     

    赋一个函数,然后传参

     

     

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

    转载请注明原文地址: https://ju.6miu.com/read-679150.html

    最新回复(0)