实例构造器和类(引用类型)
构造器(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 是 Java 开发者常用的单元测试框架,它能够帮助开发者编写自动化测试案例,从而提高代码的质量和可维护性。然而,...
然而,有些情况下,正常的单元测试框架可能无法覆盖到所有的情况,比如静态方法和私有方法的测试。这时,我们就需要引入特殊的工具,如PowerMock。本文将详细介绍如何利用PowerMock来模拟静态方法和私有方法,以便...
《数值方法 习题答案》是一份非常全面且详尽的学习资源,主要涵盖了数值方法这一领域的各类习题解答。数值方法是计算机科学、工程学、数学等专业领域中至关重要的一门课程,它研究如何用近似计算来解决那些无法直接...
在易语言中,“取类指针”和“方法指针”是面向对象编程中的关键概念,用于实现对象间的信息交互和方法调用。 1. **取类指针**: 类指针是面向对象编程中的一个重要概念,它代表了一个类实例的地址。在易语言中,...
《计算方法与实习》是计算机科学与技术领域中的一门重要课程,主要研究数值计算的理论、方法和实现。这门课程旨在培养学生解决实际问题的能力,通过实习环节加深对计算方法的理解。课后习题是巩固理论知识和提高实践...
### 静态(static)方法与重写(override) #### 一、概念解析 在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性,它允许子类提供一个与父类相同签名的方法实现。这种方法的实现允许在运行时...
最优化方法是运筹学、工程学以及数学分析等领域中用于寻找最优解的数学方法和理论。在复习题中,通过具体的数学题目和证明,我们可以深化对最优化方法的理解和应用。 1. 对称矩阵在任意点的梯度和Hesse矩阵的求解 ...
作者黄云清,数值计算方法课后习题,内容涉及数值计算方法的数学基础、数值计算方法在工程、科学和数学问题中的应用以及所有数值方法的MATLAB 程序等,涵盖了经典数值分析的全部内容。包括:非线性方程的数值解法;...
最优化方法是数学和计算机科学领域的一个重要分支,它研究如何在给定的条件下找到最佳解,例如最小化或最大化某个目标函数。这个主题广泛应用于工程设计、经济规划、数据分析等多个领域。根据提供的标题和描述,我们...
华罗庚统筹方法 华罗庚统筹方法是一种数学方法,旨在解决生产建设服务中的问题。这种方法的实用范围非常广泛,可以应用于国防、工业生产管理、复杂的科研项目组织与管理等领域。 在华罗庚统筹方法中,通过对任务的...
本文实例讲述了C#定时器实现自动执行的方法。分享给大家供大家参考。具体实现方法如下: 代码如下: //下面讲一个打开窗体定时执行按钮的东西 private void Form1_Load(object sender, EventArgs e) { System.Timers...
默罕默德所著的《格子玻尔兹曼方法》这本书是关于流体力学计算方法的一个重要参考文献,尤其对于初学者来说是学习格子玻尔兹曼方法(Lattice Boltzmann Method, LBM)的一个宝贵资源。LBM是一种用来求解流体力学问题...
动态子结构方法是解决复杂工程结构动态分析的一种高效手段,特别是在处理大型结构振动问题时。这类方法通过对结构进行子结构划分,可以显著减少计算量和复杂度,便于处理大规模的结构系统。 结构振动学的基本原理...
冯康先生的《数值计算方法》是该领域的经典之作,它详细介绍了数值分析的理论与实践,涵盖了求解数学问题的数值方法与过程。文章首先介绍了计算方法课程的主要内容,强调了计算机数系和误差的基本概念,为学习后续...
《计算方法》是工程数学领域的一本重要教材,主要涵盖了数值分析中的基本概念、理论和方法。这本教材由吉林大学数学学院的专家主编,旨在为工科学生提供坚实的数学基础,帮助他们解决实际工程问题时运用计算工具。在...
模糊多准则VIKOR方法是一种多标准决策方法(MCDM),它以妥协的解决方案为基础。在这个方法中,标准的权重(准则权系数)和标准值(准则值)需要是确定的值,但在实际决策问题中,很难完全满足这些要求。为了解决这...
数值计算方法是计算机科学与工程领域中的重要学科,它研究如何用近似方法解决数学问题,特别是在实际计算中无法得到精确解的情况下。本资源“数值计算方法答案 1-7章”由曾金平主编,出版于湖南大学出版社,提供了前...