C#

数据类型

C#

简单类型

C#
C#

值类型

布尔型

  • bool类型数据只允许取值true或false,不可以0或非0的整数代替-true和false。
  • 在C#语言中,bool类型不能像C++语言那样直接转换为int类型

字符型

C#

  • 在表示一个字符常数时,单引号内的有效字符数量必须有且只能是一个,而且不能是单引号或者反斜杠(\)。

转义符转义符

C#

引用类型

  • 根据类创建的对象都是引用类型
  • 特殊的引用类型:object,string,数组

obeject类

  • object是C#中所有类型(包括所有的值类型和引用类型)的基类。因此,对一个object的变量可以赋予任何类型的值。
  • 装箱(Boxing)与拆箱 (unboxing):
    C#

字符串类型

C#

  • “@” 加在字符串前时,所有字符将不需要经过转义。
    当字符串中包含反斜杠、双引号、换行符时可以使用。
    C#

特殊类型

推断类型

  • 类型由编译器推断,在编译时确定。
    C#

Nullable类型

  • 允许赋值为Null
    C#

Dynamic类型

  • 编译时不检查,运行时才确定,主要用于与COM组件或其他语言交互
    C#

垃圾回收

CLR的GC(Garbage Collector)自动删除堆上不再访问的数据。

常量变量与命名

C#C#
命名建议:

  • 可以使用“重构”改名(点右键—重构—重命名)
  • 驼峰命名法
    C#

运算符与表达式

C#

  • ^是异或操作符,不是乘方
    C#没有乘方运算符。乘方使用Math.Pow函数

算术计算

  • 除法/:运算结果绝对值为实际运算结果绝对值向下取整
    C#
  • 取余 %:c=a%b,c符号与a相同,|c|=|a|-n*|b|
    C#
  • 计算溢出问题:借助checked函数,捕获异常OverFlowException.
    1.0/0.0是Infinity,0.0/0.0是NaN
    C#
  • “+” 运算符两侧的操作数中只要有一个是字符串(String)
    类型,系统会自动将另一个操作数转换为字 符串然后再进行连接
    C#

逻辑运算符

  • && : 第一个操作数为假则不判断第二个操作数
    || : 第一个操作数为真则不判断第二个操作数

赋值运算符

  • 值类型的变量赋值:复制值
    引用类型的变量复制:复制引用

类型转换

值类型转换

  • 强制转换: (类型标识符)表达式,如(int)1.23
  • 隐式转换:源类型的数值范围是目标类型数值范围的子集,是安全的转换,不会造成数据越界。
    C#
    C#
    C#

引用类型转换

  • 引用类型的赋值:复制引用
    C#
  • 转型异常):强制转型虽然可以编译通过,但在运行时,如果实际对象的类型不是变量类型(或者子类)的时候,会抛出InvalidCastException
  • 如何避免InvalidCastException:
    C#
    C#

字符串和数值的类型转换

  • 采用以下方法进行转换,错误会抛出异常Eception, 可以输出其message查看
    C#

流程控制语句

分支语句–if

  • 利用条件返回if-return,使嵌套结构变为顺序结构(在一个方法中,嵌套层次一般不要超过3层)
    C#

分支语句-- switch语句

  • C#的Switch语句与C++/Java不同之处:
    分支表达式除了整型、字符、枚举型,还可以用字符串
    每个分支只有没有语句时,或者return/throw/goto等跳转语句时,才能省略后续的break
    C#

循环语句

for、while、do-while与c++语法相同

continue和break

C#
C#

数组

数组初始化

  • 与Java语法相同,与C++语法不同,注意括号位置。
    声明数组时不能指定其长度(数组中元素的个数)
    C#
  • 动态初始化:数组定义与用new为数组元素分配空间并赋值的操作分开进行
    C#
  • 静态初始化:在定义数组的同时就为数组元素分配空间并赋值
    C#

数组元素的默认值

  • 数组是引用类型,它的元素相当于类的成员变量
  • 数组一经分配堆空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。
  • 数组是一个对象,属性Length指明它的长度

多维数组

C#

交错数组

  • 交错数组是数组的数组,因此可以是不规则的
  • 交错数组的声明和初始化应按从高维到低维的顺序进行
    C#
    C#

数组基类Array

C#

foreach语句

foreach是只读式的遍历,不能修改数组元素
C#

Ref参数和Out参数

  • 使用Ref参数,可以将变量的引用(相当于栈地址,不是堆地址)传递给被调方法
  • ref修饰的变量在传递参数前要有初始值
    C#
  • 一个方法返回多个值,可由out关键词标识的输出参数实现
  • out修饰的参数要在方法中赋予初始值后,才能使用
  • 离开方法前必须给out参数赋值
  • out参数传递在前可以没有初始值(要在调用传参数括号中声明out参数类型)
  • 甚至不需要预声明(不声明时要在调用传参数括号中声明out参数类型)
    C#
    C#