C#基础1

1. ref和out:

ref与out是很特殊的两个关键字。使用它们,可以使参数按照引用来传递。

ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。

区别:

out 参数在进入方法(函数)时后清空自己,使自己变成一个干净的参数,也因为这个原因必须在方法返回之前或再使用out参数前为 out 参数赋值(只有地址没有值的参数是不能被.net接受的);

ref参数是不需要在被调用方法使用前先赋值的,甚至也可以被调用方法中不改变ref参数的 值,这都不会引起编译错误。

ref参数在使用前必需初始化,而out不需要。

out参数只进不出,ref参数有进有出。

用法上概括一下就是:out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

2.sealed,new,virtual,abstract,override

sealed,不能继承,不能重写,当应用于方法和属性时,sealed必须和override一起使用

new,现实隐藏基类的成员,在子类调用是new新定义出来的,不是基类的方法

virtual,虚成员,可以由子类中的方法重写更改,不能将virtual和static,abstract,override一起使用

abstract,抽象,可以继承,只能在抽象类中使用抽象方法,不能被实例化,不提供实际实现,没有方法体

override,重写,重写基类方法必须是抽象的,虚拟的,重写的

3.private,protected,public,internal的区别

private,是私有的,只能在类内部调用,子类不能继承private的属性和方法

protected,自己和自己的子类可以调用

public,对任何类成员完全开放,无限制

internal,同一个引用程序集内部,不是解决方案

posted @ 2012-12-18 14:42  LiGang  阅读(137)  评论(0编辑  收藏  举报