方法二 、属性 CLR学习第九课 狼


一、静态(类型)构造器不应该调用基类中的静态(类型)构造器,因为静态字段并没有被派生类继承(

即在父类中定义的静态字段等对象,在其子类并不能访问。),一个类只能有一个静态构造器,并且必须

是无参的。
二、当需要在应用程序域关闭时执行某些代码用System.AppDomain的DomainUpload事件。

三、CLR假设所有的方法参数都是按值来专递的。当参数是一样类型对象时,参数的传递可以通过传递指

向对象的引用(或者指针)来完成。 对应值类型的参数来说,传递给方法的是将值类型实例的一个拷贝

。这就是说,方法得到一份属于它自己的值类型实例拷贝,而调用该方法的代码中的实例不会受到任何影

响。
四、out:在调用前可以不初始化,必须在返回以前给out参数赋值,且被调用的方法不能直接读取参数的

值。ref在调用前必须初始化。可以定义 ref的重载,但是ref的重载和out的重载是一样的。所有如果重

载时,如果同时重载ref和out,他们其他的的相同是不行的。因为编译器生成的il代码是相同的。

五、按引用方式传递的变量必须和方法声明的参数类型完全相同(即方法是object类型的参数,那么在调

用该方法时,必须改改参数先转换为object在传递进去)。

六、可变数目参数:param,在方法的最后一个参数,但是其必须只有在最后一个。

七、new关键字。用于隐藏基类中的同名方法。

八、属性:无参属性(智能字段),含参属性(c#的含参属性 为索引器)。
定义一个属性是,编译器会在托管堆中产生以下3项:1.一个表示属性的get访问器方法。2.一个表示set

属性的访问器的方法(1、2都必须在定义get或者set访问器时才有)。3.一个位于托管堆模块元数据中属

性的定义,不管是只读 、只写、或者读写的属性都有这一项。属性只不过是类的方法而已,在属性前加

上“get_+属性名”和“set_+属性名”构成方法,二含参属性(索引器),不能名称。索引用get_item、

set_item生成对应的方法(可以设置特性修改item的 使索引的其他方法名改变)。

九、索引器:索引器必须至少有一个参数,也可以有多个,并且可以重载索引器。用object作为参数的索

引器在数组查询中是比较常见的方法,必须Hashtalbe就是一个object类型的索引器。索引器的索引值可

以是数字,也可以是字符、 字符串;索引器的set方法和无参属性一样 也有一个value的隐含参数。 该

参数表示“被索引元素”期望的新值。CLR本身并不区分无参属性 和含参属性。 对于clr 属性救救是类

型中的一个方法而已。 索引索引器(含参属性)也会像无参属性一样生成3个对象(第八条)。

原文地址:https://www.cnblogs.com/gowhy/p/2010028.html