C#基础总结

来源:互联网 发布:同步软件 编辑:程序博客网 时间:2024/06/17 09:49

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();  //定义变量valType1valType1.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属性获取对象的引用

0 0
原创粉丝点击