11.C#中用get,set表示设置器函数,用于获取或设置类中各权限数据
C#中内置value关键值用于表示set函数中用户传递值
12.C#中object类是所有其他类型的基类,所有类型都直接或间接地从object类中继承
对一个object的变量可以赋予任何类型的值
Object是system.object的别名
13.C#中有四种引用类型: 类,代表,数组,接口
14.C#中delegate(代表),实际上是C#中函数指针的原型,但是此用法是安全的
C#中一般使用引用,与C++中引用类似。
15.C#中数组声明时,方括号放在类型之后表示数组,而不是放在变量名之后。
如int[] array = new int[5] 声明一个有5个int类型元素的数组
C#中各种数组的声明有多种形式
二维数组 int[ , ] array 方括号中间用“ , “隔开 (每维元素个数一致)
三维数组 int[ , , ] 用多个逗号分隔表示多维数组
可变数组 int[][] 用多个中括号表示可变数组,每一维的元素个数可变
Int[][][] …..
16.关于数组的初始化(与C,C++不同的方法)
Int a[] = new int[] {1, 2, 3}
Int a[ , ] = new int[ , ] {{1,2,3},{4, 5, 6}}
Int a[ , ] = new int[10, 20]
Int a[ , , ] = new int[10, 20 ,30]
Int a[][] = new int[3][] 可变数组最高维必须指定
关于可变数组
Int a[][] = new int [3][]
Int a[0] = new int[] {1, 2}
Int a[1] = new int[] {1,2,3}
Int a[2] = new int[] {1,2,3,4}
函数中传递数组示 void function(int[] a); //形式
使用时 int[] array = new int[5]; function(array);或者 function(new int[] {1 ,2 3});
17.C#中 is关键字
如 int i = 5; object obj = (object)i; 此时 object is int 返回 true
注意 任何类型都可以赋值给object类型
因为object类型是所有类型的基类,当赋值发生时,就会有个装箱的过程,object对象中存储了装箱的对象类型和装箱对象的值。
当把一个object类型的对象赋予一个其他类型的变量,对应一个拆箱过程,此时需要注意类型兼容
18.C#中允许用“@”+关键值来命名变量,其中@不是变量的一部分,而是给编译器指出此变量名不是关键字。
19.C#中有7种变量类型
静态变量(static variables),非静态变量(instance variables),数组元素(array variables),值参数(value variables),引用参数(reference parameters),输出参数(output parameters),局部变量(local variables)
其中引用参数用 ref关键字声明,输出参数用out 关键字声明
20.隐式转换
a.隐式数值转换 向上转型 up-casting 0 可以隐式转换为任意整形
b.隐式枚举转换
c.隐式引用转换
1.任何引用类型到对象类型的转换
2.从类类型s到类类型t的转换,其中s是t的派生类(如int赋值给object)
3.从类类型s到接口类型t的转换,其中t是s的父接口
4.从元素类型为Ts的数组类型S向元素类型为Tt的数组类型T的转换
转换满足条件:
a. S和T只有元素的数据类型不同,但他们的维数相同
b. Ts和Tt都是引用类型(注意:数组元素的类型必须是引用类型)
c. 存在从Ts到Tt的隐式引用转换
d. 从任何数组类型到System.Array的转换
e. 从任何代表类型到System.Delegate的转换
f. 从任何数组类型或代表类型到System.ICloneable(不清楚,待查)的转换
e. 从空类型(null)到任何引用类型的转换
[待续]