1、在字符串前加一个@字符,“”中特殊字符可以不用转义
2、关键字checked和unchecked对表达式进行溢出检查
3、foreach循环遍历数组
4、多维数组声明:<baseType>[,,,]<name>; 矩形数组,不同维度之间用逗号隔开
5、锯齿数组(jagged array)声明如下:int[][] jaggedIntArray;初始化如下:jaggedIntArray=new int[2][]; jaggedIntArray[0]=new int[3]; jaggedIntArray[1]=new int[4];
遍历时必须循环遍历每个子数组和数组本身。
6、引用传递参数,使用ref关键词 void functionName(ref Type name) ; out关键词指定输出参数
7、委托是一种可以吧引用存储为函数的类型,一般用于事件和事件处理
定义:delegate void ProcessDelegate(double param1);
声明一个函数 void delegateFunction(double param1){ //实现代码 }
调用:ProcessDelegate process=new ProcessDelegate(delegateFunction); process(param1);
Predicate 泛型委托
表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素。
public delegate bool Predicate<T>(T obj);
类型参数介绍:
T: 要比较的对象的类型。
obj: 要按照由此委托表示的方法中定义的条件进行比较的对象。
返回值:如果 obj 符合由此委托表示的方法中定义的条件,则为 true;否则为 false。
8、基类可以定义为抽象类,抽象类不能直接实例化;
9、默认情况下,类声明为内部的,可以使用internal修饰符显示指定,只有当前项目才可以访问。public指定的为公共类,其他项目代码也可访问;abstract 抽象类,不能实例化,只能继承,可以有抽象成员;sealed 密封类,不能继承,对密封类的实例的虚函数可转换为非虚函数来处理。
10、C#类定义中,只能有一个基类,如果继承了一个抽象类,必须实现继承的所有抽象成员。编译器不允许派生类的可访问性高于基类,即内部类可继承公共基类,但公共基类不能继承内部类。C#所有类都继承于System.Object类。
11、结构类型是值类型(深度复制),而类是引用类型(浅复制、指针)
12、类中属性可使用访问器get/set访问
13、隐藏基类方法,可以在方法前加new关键字显示隐藏:例:new public void func(){}
14、可以使用base关键字访问基类方法
15、比较:
1)类型比较:
(1)GetType()方法或typeof()运算符;
(2)is运算符:检查对象是否给定类型或是否可以转换为给定类型,语法如下:<operand> is <type>;
(3)封箱(boxing)和拆箱(unboxing)
面向对象中封箱是指将非对象类型的数值或数据包装成对象类型;拆箱是指将对象类型转换为非对象的数值或数据。
C#中封箱是指将值类型转换为System.Object类型或有值类型实现的接口类型;拆箱与之相反。封箱是隐式转换,而拆箱需要手动显示转换。
例:如下结构类型:
//定义结构体
struct MyStruct{
public int val;
}
MyStruct valType1=new MyStruct(); //定义变量valType1
valType1.val=5; //赋值
Object refType=valType1; //封箱
MyStruct valType2=(MyStruct)refType; //拆箱
也可以把值类型转换为接口类型,但要实现该接口,举例如下:
<pre name="code" class="csharp">interface MyInterface{
}
struct MyStruct:MyInterface
{
public int val;
}
MyStruct valType1=new MyStruct();
MyInterface refType=valType1; //封箱
MyStruct valType2=(MyStruct)refType; //拆箱
封箱的作用:
<ol><li>保证项的类型是Object的集合(如ArrayList)中使用值类型;</li><li>有一个内部机制允许在值类型上调用Object方法,如int和结构。</li></ol>
2)值比较
16、转换:as运算符把一种类型转换为指定的引用类型,不能正常转换则返回null。语法如下:<operand> as <type>
适用情况:1)<operand>的类型是<type>类型;2)<operand>可隐式转换为<type>类型 ;3)<operand>可封箱到<type>类型
17、集合
System.Collections名称空间提供接口
ArrayList:Collection Base类,这个抽象类提供了集合类的许多实现方式,可以继承该类实现自己的集合类
IList
IDictionary:关键字值集合,基类DictionaryBase
迭代器:IEnumerable接口负责使用foreach循环,调用GetEnumerator()获取一个IEnumerator引用,e.MoveNext()方法遍历,e.Current属性获取对象的引用