C#随想经典(原创)

Const 和Readonly的区别

 

Const

Readonly

是否显式赋初始值

否(可以取默认值)

修饰类型

不能为Strut

所有类型

是否为static

默认static(不能显式定义)

没有这个性质

修饰局部变量

可以

不可

赋值方式

常量(可以依赖其它常量)

可以用变量或表达式赋值

考虑重点(只读性)

要求“编译”时是只读(常量)的

运行是只读(常量)的

                       










注:局部变量唯一可用的修饰符是
Const

 

注:非虚方法的调用是以引用的类型作为依据的,虚方法的调用是以对象实例的类型为依据的


is 和 as 运算符

Is用于检查对象的运行时类型是否与给定的类型兼容,格式如下:

表达式 is 类型

满足以下条件,被认为是true

1. 表达式不是Null

2.       表达式可以转换成相应类型 而不引发异常 P177

注:转换分两种:

1.       子类对象可以直接转换成父类

2.       父类对象的引用实际指向的是一个子类对象,可用强制类型转换

******************************************************************************

As是强制类型转换,格式:

       表达式 as 类型

1.功能相当于强制类型转换

于强制类型转换的不同点:

1.       as只能用于引用类型,不能用于值类型

2.       在运行时,如果不能转换,不会抛出异常,及时计算结果为null(不同于强制类型转换)


类型相等的判断:

1.       值类型相等的判断

2.       引用类型相等的判断 // 判断两个引用是否指向同一对象

3.       字符串的相等:虽然string类型是引用类型,但是string类已经对“==”“!=”运算符作了重载,所以string类型的比较是比较字符串的内容是否相等,而不是比较引用。P181


构造函数的执行过程

 

继承:

1.       不能继承构造函数

2.       可以继承私有成员,但访问权限有所控制

私有成员的可访问域只包括声明该成员的类型的程序文本。在下面的示例中

 1class A 
 2
 3int x ; 
 4static void F(B b) 
 5b.x = 1 ; // 对 
 6}
 
 7}
 
 8class B: A 
 9
10static void F(B b) 
11b.x = 1 ; // 错误 
12}
 
13}
  
14

B 继承类 A 的私有成员 x。因为该成员是私有的,所以只能在 A "类体"中对它进行访问。因此,对 b.x 的访问在 A.F 方法中取得了成功,在 B.F 方法中却失败了。

请描述一下修饰符protected internal
在同一个Assembly中,他的访问级别和public一样,而跨Assembly访问时,他的访问级别同protected一样。即protected的范围 + internal的范围。

 

c#中使用反射显示程序集的所有类型和属性

posted @ 2006-06-29 09:01  晓岚  阅读(454)  评论(2)    收藏  举报