C#与C++的异同
1.循环
同:都具有while,do-while,for三种循环结构,使用方法一样
异:C#引入了foreach,用于遍历集合中所有的元素
用法foreach(变量 in 变量,通常是一个集合)
{
循环语句
}
eg:
Int[] a={1,2,3};
foreach(int t in a)
{System.Console.WriteLine(i);
}
结果为:
1
2
3
2.数组
用法不同,C#支持以为数组,多维数组(矩形数组)和数组的数组(又称交错的数组)
1)、一维数组
声明
<类型>[] 数组名
EG:
int[] a;
方括号[]必须跟在类型之后,数组的大小并不是其类型的一部分,而在C语言中却是类型的一部分。声明数组并不实际创建它们,C#中数组是对象,必须进行实例化,只有用new操作符维数组分配空间后,数组才真正占有实在的存储单元。new创建数组的格式如下:
<数组名>=new <类型>[<长度>]
也可以在声明的同时进行初始化
int[] a={1,2,3,4,5};
C#也能通过下标访问;a[0]——1;
2)、多维数组声明如下
int[,] items= new int [5,4];
int[,,] buttons=new int[4,5,3];
同时初始化
int[,] number=new int[3,2] {{1,2},{3,4},{5,6}};
可以省略大小
int[,] number= new int[,] {{1,2},{3,4},{5,6}};
3)、数组的数组
int[][]=scores=new int[4][];
3.类的异同
C#类,包括:数据成员,方法成员,嵌套类型
数据成员,包括:常亮,域(又称字段曾远,filed menber)
方法成员(method menmber)包括:方法(method),属性(property),索引器(indexer),事件(event),操作方法(operator),构造方法(constructor);
C#类的声明方法如下:
[修饰符] class 类名 [:基类明]
包含类主体的类结构如下:
类声明
{
数据成员声明
方法成员声明
}
声明常量成员要用const关键字,并给出常量名及其类型,格式如下
[修饰符] const 常量类型 常量名 =值 修饰符 public private internal protected
声明字段成员必须给给出变量名及其所属的类型,同时还可以制定其他特性。
[修饰符][static] 变量类型 变量名
声明方法成员的格式如下:
[修饰符][static] 返回值类型 方法名 (参数列表)
{
方法体;
}
属性提供对类的没够特征的访问。一个属性可以有两个访问操作符,分别是get和set,他们分别制定属性读取或写入新值的方式。格式如下:
[修饰符][static] 类型 属性名
{
get{属性读取过程}
set{写入新属性值的过程}
}
在类的成员声明中,用static关键字声明静态成员,静态成员属于整个类,该类的所有实例共享静态成员,实例成员的声明没有static关键字,该类的每个实例都有自己专有的实例成员
对象声明的格式:
类名 对象名;
对象的声明并没有实际创建新的对象,需要用new才做符在需要的时候创建新的对象,格式如下:
类名 对象名 =new 与类名相同的构造方法(参数列表);
EG:
Stack s=new Stack();
对象引用类的成员变量:
对象名.成员名;
对象调用方法:
对象名.方法名(参数表)
不同于C++,在C#中,程序员只需要创建所需对象,不需要显示的摧毁它们。.NET平台的垃圾回收机制自动判断对象是否还在被使用,并能自动销毁不再使用的对象,回首这些对象所使用的内存资源。
C#中类的继承和镶嵌
继承方式,派生说明
修饰符 class 类名:基类名————————————对比C++派生,class 类名:派生方式也就是修饰符 基类名
在没有显示地表明基类的所有类,都隐式地继承自object类(System.Object)。
当派生类成员名与基类成员名同名时,称派生类成员将基类同名成员隐藏,此时应在派生类成员定义中加上new关键字。(C++中这种情况叫做同名覆盖,派生类的成员替代了基类的成员)
this 与base
C#中用this访问对象自身,用base访问基类