`

方法

    博客分类:
  • CLR
 
阅读更多

实例构造器和类(引用类型)

构造器(constructor)是允许将类型的实例初始化为良好状态的一种特殊方法。  创建一个引用类型的实例时,首先为实例的数据字段分配内存,然后初始化对象的附加字段(类型对象指针和同步索引块),最后调用类型的实例构造器来设置对象的初始状态。   和其他方法不同,实例构造器永远不能被继承。

类的实例构造器在访问从基类继承的任何字段之前,必须先调用基类的构造器。如果派生类的构造器没有显式的调用一个基类构造器,C#编译器会自动生成对默认的基类构造器的调用。

    internal sealed class SomeType{

       private Int32 m_x=5;

       private String m_s="Hello";

       private Double m_d=3.14159;

       private Byte m_b;

       //以下是一些构造函数

       public SomeType() {...}

       public SomeType(Int32 x) {...}

       public SomeType(String s){...;m_d=10;}

 }

编译器为这三个构造器方法生成代码时,在每个方法的开始位置,都会包含用于初始化m_x,m_s,m_d的代码。在这些初始化代码之后,编译器会插入对基类构造器的调用。再然后,会插入构造器自己的代码。例如,对于获取一个String参数的构造器,编译器生成的代码首先初始化m_x,m_s,m_d,再调用基类Object的构造器,再执行自己的代码,最后用值10覆盖m_d原先的值。注意,即使没有代码显式初始化m_b,m_b也保证会被初始化为0。

 

实例构造器和结构(值类型)

CLR总是允许创建值类型的实例,并且没有办法阻止值类型的实例化。值类型并不需要定义构造器,C#编译器根本不会为值类型生成默认的无参构造器(事实上,C#编译器根本不允许为值类型定义无参构造器)。

值类型的实例构造器只有在显式调用时才会执行。

 

类型构造器(静态构造器)

类型构造器的作用是设置类型的初始状态。类型默认没有定义类型构造器,如果定义,也只能定义一个。此外,类型构造器永远没有参数。   C#会自动把它们标记为private,这是为了阻止任何开发人员写的代码调用它,对它的调用总是由CLR负责的。    类型构造器中的代码只能访问类型的静态字段,并且它的常规用途就是初始化这些字段。

 

http://blog.csdn.net/kendezhu/article/details/4915129(操作符重载方法  转换操作符重载方法)

操作符重载方法

C#中允许一个类型定义操作符该如何操作该类型的实例。CLR对操作符重载一无所知,是编程语言定义了每个操作符的含义,以及当这些特殊符号出现时应该生成什么样的代码。例如,向基元类型的数字应用+时,编译器会生成将两个数加在一起的代码,而向String应用+时,编译器会生成将连个字符串连接到一起的代码。

CLR规范要求操作符重载方法必须是public和static方法,要求重载方法至少有一个参数的类型与当前定义该重载方法的类型相同(为了使编译器在合理的时间内找到要绑定的操作符方法)

转换操作符重载方法

CLR规范要求转换操作符重载方法必须是public和static方法,要求重载方法的参数类型和返回类型必有其一与定义该方法的类型相同(为了使编译器在合理的时间内找到要绑定的操作符方法)

 

分部类,分部方法

一个源代码文件如下:

internal sealed partial class Base{

   private String m_name;

   partial void OnNameChanging(String value);       //分部方法的声明

}

另一个源代码文件如下:

internal sealed partial class Base{

   partial void OnNameChanging(String value){     //分部方法的实现

    if(String.IsNullOrEmpty(value))

        throw new ArgumentNullException("value");

   }

}

分部方法的声明,要用partial关键字标记,无主体。

分部方法的实现,要用partial关键字标记,有主体。

如果没有实现分部方法,编译器不会生成任何代表分部方法的元数据。编译器不会生成任何调用分部方法的IL指令。

分部方法只能在分部类或结构中声明。

分部方法的返回类型始终是void,任何参数都不能用out修饰符来标记。

分部方法总是被视为private方法。

分享到:
评论

相关推荐

    Junit测试Void方法

    Junit通常用于那些有明确返回值的方法的测试,而无法对返回值是void类型的方法进行测试,因为Junit的assert断言方法只适用于预期值与实际值的比较,对于void类型的方法,我们无法从它的return语句获得具体的返回值。...

    数值计算方法习题精析(黄云清)

    作者黄云清,数值计算方法课后习题,内容涉及数值计算方法的数学基础、数值计算方法在工程、科学和数学问题中的应用以及所有数值方法的MATLAB 程序等,涵盖了经典数值分析的全部内容。包括:非线性方程的数值解法;...

    FFT方法 FFT方法 FFT方法 FFT方法 FFT方法 FFT方法

    FFT方法 FFT方法 FFT方法 FFT方法 FFT方法 FFT方法

    随机模拟方法与应用(高清)

    全书共分十一章,分别介绍了随机模拟方法的特点与步骤、概率论预备知识、Matlab软件的基本编程方法、随机数的生成方法、马尔可夫链蒙特卡罗方法、随机服务系统模型、蒙特卡罗优化方法、随机游走模型、蒙特卡罗积分...

    实用极值统计方法 史道济

    《实用极值统计方法》是2006年天津科学技术出版社出版的图书,作者是史道济。不能奢望通过本书能解决读者所遇到的一切有关极值统计分析问题。一方面,极值理论正处于迅速发展中,有些问题的处理在理论上还没有一种...

    有限元方法的数学基础.pdf

    书名:有限元方法的数学基础 图书编号:1040680 出版社:科学出版社 定价:20.0 ISBN:703013478 作者:王烈衡 出版日期:2005-06-30 版次:1 开本:大32开 简介: 本书为《中国科学院研究生教学丛书》之一。 本书是...

    企业经营数据分析——思路、方法、应用与工具

    企业经营数据分析——思路、方法、应用与工具》为从事企业经营数据分析工作的人员以及企业中的高层管理者提供数据分析的思路和方法。《企业经营数据分析——思路、方法、应用与工具》的内容来自笔者长期从业经验的...

    遥感数字图像处理:原理与方法

    本书分三部分(遥感数字图像处理基础、遥感数字图像质量改善、遥感数字图像特征选择与信息提取)由浅入深系统地介绍了遥感数字图像处理的原理与方法,其中不仅包括常用的经典方法,也包括近几年新提出的方法。...

    软件开发的形式化方法

    《软件开发的形式化方法》对软件开发中的形式化方法进行了介绍和讨论,内容涵盖了SE2004中关于"软件的形式化方法"的知识点,主要包括:有限状态机、Statecharts、Petri网、通信顺序进程、通信系统演算、一阶逻辑、...

    数据包络分析模型与方法(马占新)

    马占新编*的《数据包络分析模型与方法》旨在 给出一种*具广泛含义的数据包络分析方法——广义 数据包络分析方法,并探讨其在自然科学与社会科学 领域中的应用。主要包括作者博士后出站报告(2001) 的部分内容以及作者...

    《最优化方法》复习题 含答案(附录 5 《最优化方法》复习题)

    《最优化方法》复习题 含答案 孙文瑜 徐成贤版(附录 5 《最优化方法》复习题)

    计算方法.计算方法.计算方法.

    计算方法.计算方法.计算方法.计算方法.计算方法.计算方法.

    《纠错码——原理与方法 (修订版)》

    王新梅,肖国镇编著,《纠错码—原理与方法》,西安电子科技大学出版社,2001年版 纠错码是门新的差错控制技术目前已广泛应用于各种通信系统和计算机 系统中.本书着重阅述纠错码的基本原理和各种编、译码方法。...

    软件测试方法和技术(又名全程软件测试,电子版,朱少民著)

    从软件项目启动、需求评审、测试计划开始,然后深入到测试用例设计、测试工具选择、脚本开发、功能测试和系统测试等不同阶段,生动地演绎了必需而实用的测试方法、技术和实施技巧。本书还系统地介绍了测试管理的各个...

    最优化方法 孙文瑜

    最优化方法 孙文瑜

    SPSS Modeler数据挖掘方法及应用_网盘链接下载85.25M

    SPSS Modeler数据挖掘方法及应用,本书主要特点: 1)以数据挖掘过程为线索介绍SPSS Modeler软件 2)数据挖掘方法,软件操作、案例分析的有机结合 3)数据挖掘方法讲解通俗,软件操作过程说明详实 主要内容如下: 1...

    《软件测试方法和技术》电子课件之四

    前 言 <br>第一篇 软件测试的原理 第1章 软件及其开发过程 第2章 软件测试的基本概念和方法 第3章 质量保证与测试策略 第4章 软件测试依据和规范 <br>第二篇 软件测试的技术 第5...

    产品设计方法论

    网龙的产品设计方法论,特别适合产品新人入门 包含产品必修的技能讲述和学习方法,得到就是赚到

    遥感数字图像处理:原理与方法(带书签)

    本书分三部分(遥感数字图像处理基础、遥感数字图像质量改善、遥感数字图像特征选择与信息提取)由浅入深系统地介绍了遥感数字图像处理的原理与方法,其中不仅包括常用的经典方法,也包括近几年新提出的方法。...

Global site tag (gtag.js) - Google Analytics