首页 > Windows开发 > 详细

C#笔记

时间:2015-03-27 16:52:35      阅读:179      评论:0      收藏:0      [点我收藏+]

构造函数:

与类名具有一样名称的成员函数是构造函数。构造函数不能有返回值,甚至不能有return语句。说明一个有返回值的构造函数是错误的,取构造函数的地址也是错误的。

如果一个类有构造函数,在程序中每个该类类型的对象在使用之前由此构造函数进行初始化。

构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用。构造函数往往执行一些初始化的操作。

构造函数是在对象的创建点上被调用的。创建对象可以是:

* 全局对象(文件范围或外部链接的)。
* 在一个函数或者小的封闭块中的局部变量。
* 用new运算符创建的动态对象。new操作在程序的堆或自由存储区中分配一个对象。
* 因显式调用构造函数而创建的临时对象(详见本章后面的“临时对象”)。
* 因编译器隐含调用构造函数而创建的临时对象(详见本章后面的“临时对象”)。
* 其它类的数据成员。在创建类类型的对象时,若此类类型由其它类类型变量组成,将会引起  该类中每个对象的创建。
* 一个类的基类子对象。创建派生类类型的对象时会引起基类构件的创建。

构造函数的作用:

构造函数的功能主要用于在类的对象创建时定义初始化的状态,它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有选择。二其他方法都有返回值,即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让他返回一些东西,而这些东西可能是不安全的。

一个构造函数执行各种任务,但对于程序员来说,这些任务是不可见的,你甚至可以不必为构造函数写任何代码。这些任务都同建立一个完全的、正确的类类型对象实例有关。
在MS C++中(同样也在很多其它C++中)一个构造函数:
* 初始化对象的虚拟基指针(vbptr)。如果该类是由虚拟基类派生出的,则这一步要执行。
* 按说明的顺序调用基类和成员的构造函数。
* 初始化对象的虚拟函数指针(vfptr)。如果该类有或者继承了虚拟函数,则这一步要执行,虚拟函数指针指向类的虚拟函数表(v-table),并且使虚拟函数的调用同代码正确绑定(binding)。
* 在构造函数体中执行可选的代码。

问:请问如何做到在构造函数里就销毁对象?

答:继承IDispose接口,并在构造函数中调用Dispose方法。只不过内存的释放和这个无关,完全由GC在管理。

方法参数关键字:params,ref,out

Params:用于指定在参数数目可变处,采用参数的方法参数。只能有一个params,并且在他后面不能再有参数。

~方法参数:如果在为方法声明参数是未使用ref或out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值

ref:使方法可以引用传递到该方法的参数。当程序跳转到调用方法处的时候,在方法中对参数所做的任何改动都将传递给参数。类似于传地址。

注意!!!必须将参数作为ref参数显示的传递到方法。参数必须显示的初始化!属性不是变量不能作为ref参数传递。

out:使方法可以引用传递到该方法的同一个变量。当程序跳转到方法调用处时,在方法中对变量所做的任何改动都将传递给该变量。

注意!!!当希望方法返回多个值时,声明out非常有用。一个方法可以有多个out参数。

必须将参数作为out参数显示的传递方法。不必初始化作为out参数的变量。属性不是变量不能作为out变量。

注意!!!ref参数必须显示初始化,而out参数不用。

C#关键字

abstract :可以和类、方法、属性、索引器及事件一起使用,标识一个可以扩展但不能被实体化的、必须被实现的类或方法。
as:一个转换操作符,如果转换失败,就返回null 
base : 用于访问被派生类或构造中的同名成员隐藏的基类成员。
catch  :定义一个代码块,在特定类型异常抛出时,执行块内代码。参见tryfinally
checked  :既是操作符又是语句。确保编译器运行时,检查整数类型操作或转换时出现的溢出。
const :标识一个可在编译时计算出来的变量值,即一经指派不可修改的值。
delegate :指定一个声明为一种委托类型。委托把方法封装为可调用实体,能在委托实体中调用。
Enum:表示一个已命名常量群集的值类型。
event   :允许一个类或对象提供通知的成员,他必须是委托类型。
Explicit:一个定义用户自定义转换操作符的操作符,通常用来将内建类型转换为用户定义类型或反向操作。必须再转换时调用显示转换操作符。
extern :标识一个将在外部(通常不是c#语言)实现的方法。

finally :定义一个代码块,在程序控制离开try代码快后执行。参见trycatch
Fixed:在一个代码块执行时,在固定内存位置为一个变量指派一个指针。
foreach :用于遍历一个群集的元素。
goto :一个跳转语句,将程序执行重定向到一个标签语句。

implicit :一个操作符,定义一个用户定义的转换操作符。 通常用来将预定义类型转换为用户定义类型或反向操作。隐式转换操作符必须在转换时使用。

interface :将一个声明指定为接口类型,即实现类或构造必须遵循的合同。

Internal:一个访问修饰符。

namespace  :定义一个逻辑组的类型和命名空间。

operator :用来声明或多载一个操作符。

Out:标识一个参数值会受影响的参数,但在传入方法时,该参数无需先初始化。

params :声明一个参数数组。如果使用,必须修改指定的最后一个参数。允许可选参数。

readonly :标识一个变量的值在初始化后不可修改。

ref :标识一个参数值可能会受影响的参数。

Sealed:防止类型被派生,防止方法和property被覆载。

sizeof :一个操作符,以byte为单位返回一个值类型的长度。

stackalloc :返回在堆上分配的一个内存块的指针。

struct :struct是一种值类型,可以声明常量、字段、方法、property、索引器、操作符、构造器和内嵌类型。

throw :抛出一个异常。

try :异常处理代码块的组成部分之一。try代码块包括可能会抛出异常的代码。参阅catchfinally关键字。

typeof :一个操作符,返回传入参数的类型。

unchecked :禁止溢出检查。

unsafe :标注包含指针操作的代码块、方法或类。

using :当用于命名空间时,using关键字允许访问该命名空间中的类型, 而无需指定其全名。也用于定义finalization操作的范围。

virtual :一个方法修饰符,标识可被覆载的方法。

Volatile:标识一个可被操作系统、某些硬件设备或并发线程修改的attribute

 

C#笔记

原文:http://www.cnblogs.com/1539136475-/p/4371982.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!