`

方法

    博客分类:
  • 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方法。

分享到:
评论

相关推荐

    数据安全治理能力评估方法

    数据安全治理能力评估方法数据安全治理能力评估方法数据安全治理能力评估方法数据安全治理能力评估方法数据安全治理能力评估方法数据安全治理能力评估方法数据安全治理能力评估方法数据安全治理能力评估方法数据安全...

    易语言取类指针及方法指针

    在易语言中,“取类指针”和“方法指针”是面向对象编程中的关键概念,用于实现对象间的信息交互和方法调用。 1. **取类指针**: 类指针是面向对象编程中的一个重要概念,它代表了一个类实例的地址。在易语言中,...

    静态(static)方法重写(override)

    ### 静态(static)方法与重写(override) #### 一、概念解析 在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性,它允许子类提供一个与父类相同签名的方法实现。这种方法的实现允许在运行时...

    matlab做谱方法

    ### MATLAB中的谱方法知识点概述 #### 一、引言与背景 在数学和工程领域,谱方法是一种基于函数展开的数值解法,主要用于求解偏微分方程(PDE)和常微分方程(ODE)。MATLAB作为一种强大的计算工具,提供了丰富的库和...

    C#定时器实现自动执行的方法

    本文实例讲述了C#定时器实现自动执行的方法。分享给大家供大家参考。具体实现方法如下: 代码如下: //下面讲一个打开窗体定时执行按钮的东西 private void Form1_Load(object sender, EventArgs e) { System.Timers...

    《数值计算方法》丁丽娟 课后习题答案

    《数值计算方法》是计算机科学和数学领域中的一门重要课程,主要研究如何用近似方法解决各种数学问题。丁丽娟教授的这本教材深入浅出地介绍了数值计算的基本概念、理论和算法,旨在帮助学生掌握实际计算中的技巧与...

    结构振动与动态子结构方法

    动态子结构方法是解决复杂工程结构动态分析的一种高效手段,特别是在处理大型结构振动问题时。这类方法通过对结构进行子结构划分,可以显著减少计算量和复杂度,便于处理大规模的结构系统。 结构振动学的基本原理...

    【小红书】2024小红书餐饮行业方法论报告.pdf

    【小红书】2024小红书餐饮行业方法论报告.pdf【小红书】2024小红书餐饮行业方法论报告.pdf【小红书】2024小红书餐饮行业方法论报告.pdf【小红书】2024小红书餐饮行业方法论报告.pdf【小红书】2024小红书餐饮行业方法...

    模糊多准则VIKOR方法及其应用

    模糊多准则VIKOR方法是一种多标准决策方法(MCDM),它以妥协的解决方案为基础。在这个方法中,标准的权重(准则权系数)和标准值(准则值)需要是确定的值,但在实际决策问题中,很难完全满足这些要求。为了解决这...

    数值计算方法(第二版)PPT教案(马东升)

    《数值计算方法(第二版)》是由马东升教授编撰的一部深入讲解数值计算理论与实践的教程,涵盖了从基础到高级的多种数值计算技术。该教程共分为七章,每章都针对一个核心主题进行详尽阐述,旨在帮助学习者掌握数值...

    2设计方法与策略:代尔夫特设计指南.pdf

    《设计方法与策略:代尔夫特设计指南》是代尔夫特理工大学工业设计工程学院50多年来对产品设计方法的经验总结。众所周知,传统的设计教材总是枯燥地解释方法,而忽略了实际应用。《设计方法与策略:代尔夫特设计指南...

    软件测试方法和技术.zip

    "软件测试方法和技术.zip"这个压缩包很可能包含了一系列关于软件测试的详细资料,涵盖了多种测试方法和技术。以下是对这些关键概念的深入解释。 1. **黑盒测试**:这是一种不考虑内部结构或工作原理,仅关注软件...

    李政道 数学物理方法.pdf

    《李政道 数学物理方法》作为一本专业书籍,主要探讨了数学物理领域的基本理论和方法,涵盖了矢量与张量分析、张量代数、希尔伯特空间、复变函数论等重要概念。书中不仅讨论了这些概念的定义和性质,还深入探讨了...

    数值方法和matlab实现与应用 PDF

    《数值方法和MATLAB实现与应用》是一本深入探讨数值计算技术及其在MATLAB环境中的实际应用的专业书籍。这本书旨在帮助读者理解并掌握各种数值计算方法,并通过MATLAB这一强大的科学计算工具进行实践操作。 首先,...

    数据异常剔除方法

    本文将详细讨论几种常见的异常剔除方法,并介绍基于不同原理的异常点检测算法。 首先,拉依达方法是异常值检测的简单准则,它基于正态分布假设。如果一个数据点超过平均值加减3倍标准差的范围,根据正态分布的性质...

    计算机数值方法施吉林第三版实验

    计算机数值方法是计算机科学与工程领域中至关重要的一个分支,它主要研究如何用近似算法解决数学中的问题,尤其在无法获得精确解析解或者解析解过于复杂时。施吉林教授的《计算机数值方法》第三版是一本广泛使用的...

    数值计算方法___吕同富

    数值计算方法一与计算机相结合是木书的特点,也是科学计算发展的需要随着计算机的 不断发展和进步,优秀的数学软件h'I ATI} AI3应运而生,hi ATi.A I3一问世就以它强大的功 能,被广大科技工作者公认为科学计算最好...

    西电工程优化-陈开周《最优化计算方法》历年原题以及PPT课件等还有课后题答案

    西电工程优化-陈开周《最优化计算方法》历年原题以及PPT课件等还有课后题答案 西电工程优化-陈开周《最优化计算方法》历年原题以及PPT课件等还有课后题答案 西电工程优化-陈开周《最优化计算方法》历年原题以及PPT...

    最优化方法课后答案

    最优化方法是数学和工程学中的一个重要领域,它涉及到寻找某些参数(变量)的最优值,通常以最大化或最小化某个目标函数来实现。在工程、经济学、计算机科学等领域,最优化方法被广泛应用于解决设计、规划、操作等...

    数据分析方法--梅长林

    《数据分析方法》是为高等院校信息与计算科学专业本科生“数据分析课程”编写的教材,内容涉及常用统计数据分析的基本内容与方法,包括数据的描述性分析、线性回归分析、方差分析、主成分分析和典型相关分析、判别...

Global site tag (gtag.js) - Google Analytics