ü 继承:classB:classA->B继承A(派生类不能删除它所继承的任何成员),派生类可以访问父类的成员(除private),所有的类都继承于object
ü 隐藏父类成员:在子类中保留一个与父类相同类型和名称的成员
ü 访问隐藏的父类成员:在子类方法中使用base.fatherfile
ü 派生类的引用指向整个类对象,包括基类部分,使用类型转化可以使派生类转化为基类(new1a=new new1(),old1=(old1)a )
ü 虚方法(virtual)和覆写方法(override):使得基类引用可以访问派生类方法;1,派生类方法和基类方法有相同的返回值和签名2,使用virtual和override
如:public classa{
virtual publicvoid play(){
System.Console.Write(“a”);
……………….
Public classb:a{
Override public void play(){
System.Console.Write(“b”);
……………………
main->bhah=new b();a hello=(a)b;->a.paly()->”b”
ü 覆盖其他成员类型:子类和父类成员类型名称相同,值不同new1a=new new1(),old1=(old1)a;a.file1->子类的值
ü 子类构造函数指定父类的构造函数(当父类构造函数被重载时);子类构造函数:publica():base(参数列表)->指定参数列表(int a,String b)
ü 程序集间的继承:基类必须被声明为public,vs工程中必须包含该基类程序集的引用
ü 抽象类,抽象方法类似于java
ü 密封类:只能作为独立的类,不能被继承,使用关键字sealed
ü 静态类:(用途)包含一组数学方法和值的数学裤,类本身是静态的,所有成员必须是静态的,不能创建实例,不能继承
ü 字面量:整数字面量:236(整形)236L(长整型)236U(无符号整型)236UL(无符号长整型);实数字面量:F(f)->float,D(d)->double,M(m)->decimal,无->double;字符,字符串字面量:char,string,\n,\r(回车);c#中的数字不具有bool的意义(True,False)
ü 运算符:逻辑运算符(&&,||,!),位运算(&,|,^,~),移位运算符(>>,<<),赋值运算符(+=,*=,>>=,&=,|=……….),条件运算符(a>b?1:0),typeof(System.Type)->参数可以是任何已知的系统类型
ü goto语句:在方法内无条件的跳转至goto之后的地方,如(goto a;……..a:System.Console.Write(“haha”);)
ü using:使用资源,例如using(TextWriter tw=File.CreateText(“a.txt”)){…}
ü 给using起别名:using sc=System.Console;
ü 异常处理机制:(1)try{……..}catch{……}->(通用)catch只能带一个(2)try{…….}catch(ExceptionType){……}->特定catch可以带多个(3)try{…..}catch(EXceptionTypee){….}->特定catch可以带多个
ü finally{….}做最后的处理,一般来说是释放资源。
ü C#中例举的一些异常:ArgumentException(参数错误),ArgumentNullException(参数为空错误),ArrayTypeMismatchException(数组类型不匹配)……
异常例子:static void main(String []args){
try{
try{
int a = 0;
if(a==0){
ArgumentNullException e = new ArgumentNullException("O MY GOD");
throw e;
}
}
catch(ArgumentNullException e){
System.Console.Write(e.Message);
throw;
}
}catch{
System.Console.Write("haha");
}finally{
System.Console.Write("finally");
}
}
ü C#值类型和引用类型:值类型(结构体,枚举,可空类型),引用类型(数组,类,接口,委托,object,字符串);不管是值类型还是引用类型都存储在托管堆上,引用类型在栈上存在一个引用
ü 结构体:
struct sample{
public int a;
public int b;
public sample(int c,int d){
a = c;b = d;
}
}
main->sample a=new sample(5,10);当然也可以直接调用->sample s;s.a=1;s.b=9;.
ü 枚举类型:
ü enum color{
red,green,black
}
main()
color a = color.red;
color b = color.black;
System.Console.Writeln("{0},{1}", a, (int)a);//a==a.ToString()
System.Console.Write("{0},{1}",b,(int)b);
output:red,1 black,2
ü 枚举延伸:enumcolor:int{
red=21,green,black=8//green=22(会往下自增)
}
main()
if(color.red