专业词汇
标识符:字母数字下划线和@符号;C#大小写敏感
关键字:系统语言本身使用;C#有77个(类型申明,数据类型,程序流程控制,常数值)上下文关键字
标识符的命名约定:Pascal和Camel
变量和常量
变量相等于一个盒子,变量值相当于盒子中的东西,变量命名相当于给盒子贴标签
声明变量,变量的初始化
var关键字:隐式类型推断
this关键字代表当前类的实例
数据类型像是数据结构的模板:它包含了很多信息(数据所需的内存,数据的取值范围,继承的基类信息,在内存中的位置,所支持的操作,自身的成员等)
接口:实现接口的类必须实现接口规定的方法和属性等;可以说接口是一种约定,甚至是一种规定
接口可以继承多个基接口,接口只能包含签名;类只能继承一个类,类可以包含实现
接口能包括下列函数签名:方法,属性,事件,索引器
委托:类似于C++中的指针,但它的类型安全,可以引用函数,每一个委托都有一些签名,使用delegate关键字
Nullable:可空类型;int=0表示空是不对的
dynamic类型:C#4.0新加,增强动态语言支持,只存在于编译器而在运行时并不存在
C#是静态类型语言,变量一旦声明就无法重新声明或者存储其他数据类型的数据,除非进行类型装换
CIL代码
隐式装换和显式装换(在变量前使用一对小括号()运算符,小括号中是目标类型;也可以使用as运算符)
溢出检测:checked关键字和unchecked关键字
byte MyByte = checked((byte)MyInt);//溢出则抛出System.OverflowException异常
as和is运算符
as运算符用于在两个引用类型之间进行类型装换,如果转换失败则返回为null,并不抛出异常;因此通过结果是否为null判断装换是否成功,as是有一定使用范围的,它只适用于引用类型或可以为null的类型,而无法执行其他类型
is运算符用于检查对象是否与给定的类型兼容,并不进行真正懂得转换
表达式:操作数+运算符
++i和i++:前置操作符返回表达式的新值;后置操作符返回表达式的旧值
对于引用类型的操作数而言,大多数情况比较的是它们的引用,而不管它们的引用对象有多么相似,甚至是相同
string类之间比较的是字符串长度和它们的值
为运算符(<<和>>):将第一个操作数向左或向右移动第二个操作数所指定的位数,其中第二个操作数的类型是int型,向左移动n位,相当于原值的2^n倍;向右移动n位,相当于原值的1/2^n
赋值运算符除了左边是变量外,还可以是:属性,索引,事件
typeof是一元运算符,用于返回任意一个类型的类型信息
运算符重载只能用于类或结构
public static 自定义类型 operator 要重载的运算符(类型)
public static 自定义类型 operator 要重载的运算符(类型1,类型2)
需要注意的是,所有的运算符重载均为类的静态方法,且必须使用public进行修饰
重载运算符(==和!=;<和>等)时,必须成对重载
语句
语句类型:
选择语句:if,else,switch,case
循环语句:do,for,foreach,in,while
foreach(类型 变量 in 集合){}
跳转语句:break,continue,default,goto,return,yield
异常处理语句:throw,try-catch,try-finally,tyr-catch-finally
检查和未检查语句:checked和unchecked
fixed语句和lock语句
方法
一个方法由签名和方法体构成
形参,实参,重载决策机制
ref,out和Params关键字
栈帧,递归,方法的重载(方法重载的条件:在同一个类中,方法名相同,方法签名不同)
方法主要可以分为静态方法和实例方法