一、C#基本数据类型

    1.整型

    sbyte 有符号数,占用1个字节,-2〜2-1
    byte 无符号数,占用1个字节,0〜2-1
    short 有符号数,占用2个字节,-2〜2-1
    ushort 无符号数,占用2个字节,0〜2-1
    int 有符号数,占用4个字节,-2〜2-1
    uint 无符号数,占用4个字节,0〜2-1
    long 有符号数,占用8个字节,-2〜2-1
    ulong 无符号数,占用8个字节,0〜2-1

    2、浮点型

    float 单精度浮点型,占用4个字节,最多保留7位小数
    double 双精度浮点型,占用8个字节,最多保留16位小数

    3、字符型和字符串类型
    char 表示字符 ‘a’、’中’,用单引号括起来
    string 表示字符串 “abc”、”你好世界” ,用双引号括起来

    在 C# 语言中还有一些特殊的字符串,代表了不同的特殊作用。由于在声明字符串类型的数据时需要用双引号将其括起来,那么双引号就成了特殊字符,不能直接输出,转义字符的作用就是输出这个有特殊含义的字符。

    \‘ 单引号
    \“ 双引号
    \\ 反斜杠
    \0
    \a 警告(产生蜂鸣音)
    \b 退格
    \f 换页
    \n 换行
    \r 回车
    \t 水平制表符
    \v 垂直制表符

    3、布尔类型
    boll 声明 值只有 true 和 false

    二、运算符
    1、算术运算符

    + 对两个操作数做加法运算
    - 对两个操作数做减法运算
    * 对两个操作数做乘法运算
    / 对两个操作数做除法运算
    % 对两个操作数做取余运算
    • 对于两个字符串使用 + 运算符时,代表的是字符串值的连接
    • 使用 / 运算符时,操作数如果都为整型则进行的是取整运算,如果操作数包含浮点数则为正常的除法运算
    • 使用 % 运算符时,操作数都整数则为取余。经常用来判断某个数是否能被其他的数整除

    2、逻辑运算符

    && 逻辑与 如果运算符两边都为 True,则整个表达式为 True,否则为 False;如果左边操作数为 False,则不对右边表达式进行计算,相当于“且”的含义
    || 逻辑或 如果运算符两边有一个或两个为 True,整个表达式为 True,否则为 False;如果左边为 True,则不对右边表达式进行计算,相当于“或”的含义
    ! 逻辑非 表示和原来的逻辑相反的逻辑

    3、比较运算符

    == 表示两边表达式运算的结果相等,注意是两个等号
    != 表示两边表达式运算的结果不相等
    > 表示左边表达式的值大于右边表达式的值
    < 表示左边表达式的值小于右边表达式的值
    >= 表示左边表达式的值大于等于右边表达式的值
    <= 表示左边表达式的值小于等于右边表达式的值

    使用比较运算符得到的值为布尔值 true 或 false
    4、位运算符
    所谓的位运算,通常是指将数值型的值从十进制转换成二进制后的运算,由于是对二进制数进行运算,所以使用位运算符对操作数进行运算的速度稍快。

    & 按位与。两个运算数都为 1,则整个表达式为 1,否则为 0;也可以对布尔型的值进行比较,相当于“与”运算,但不是短路运算
    | 按位或。两个运算数都为 0,则整个表达式为 0,否则为 1;也可以对布尔型的值进行比较,相当于“或”运算,但不是短路运算
    ~ 按位非。当被运算的值为 1 时,运算结果为 0;当被运算的值为 0 时,运算结果为 1。该操作符不能用于布尔型。对正整数取反,则在原来的数上加 1,然后取负数;对负整数取反,则在原来的数上加 1,然后取绝对值
    ^ 按位异或。只有运算的两位不同结果才为 1,否则为 0
    << 左移。把运算符左边的操作数向左移动运算符右边指定的位数,右边因移动空出的部分 补 0
    >> 有符号右移。把运算符左边的操作数向右移动运算符右边指定的位数。如果是正值,左侧因移动空出的部分补 0;如果是负值,左侧因移动空出的部分补 1
    >>> 无符号右移。和 >> 的移动方式一样,只是不管正负,因移动空出的部分都补 0

    左移 1 位相当于将操作数乘 2,右移 1 位相当于将操作数除 2
    5、三元运算符
    布尔表达式 ? 表达式 1: 表达式 2

    • 布尔表达式:判断条件,它是一个结果为布尔型值的表达式。
    • 表达式 1:如果布尔表达式的值为 True,该三元运算符得到的结果就是表达式 1 的运算结果。
    • 表达式 2:如果布尔表达式的值为 False,该三元运算符得到的结果就是表达式 2 的运算结果。

    6、赋值运算符

    = x=y,等号右边的值给等号左边的变量,即把变量 y 的值赋给变量 x
    += x+=y,等同于 x=x+y
    -= x-=y,等同于 x=x-y
    *= x=y,等同于 x=xy
    /= x/=y,等同于 x=x/y
    %= x%=y,等同于 x=x%y,表示求 x 除以 y 的余数
    ++ x++ 或 ++x,等同于 x=x+1
    x— 或 —x,等同于 x=x-1

    7、运算符优先级!!
    前面介绍了 C# 中基本的运算符,在表达式中使用多个运算符进行计算时,运算符的运算有先后顺序。
    如果想改变运算符的运算顺序必须依靠括号。运算符的优先级如下表所示,表中显示的内容是按优先级从高到低排序的。

    运算符 结合性
    .(点)、()(小括号)、[](中括号) 从左到右
    + (正)、-(负)、++ (自增)、—(自减)、~(按位非)、!(逻辑非) 从右到左
    * (乘)、/ (除)、% (取余) 从左向右
    + (加)、-(减) 从左向右
    <<、>>、>>> 从左向右
    <、<=、>、>= 从左向右
    ==、!= 从左向右
    & 从左向右
    | 从左向右
    ^ 从左向右
    && 从左向右
    || 从左向右
    ?: 从右到左
    =、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、>>>= 从右到左

    三、变量
    数据类型 变量名;
    数据类型 变量名 = 值;

    1. class Program
    2. {
    3. static void Main(string[] args)
    4. {
    5. int num1 = 100;
    6. double num2 = 100.123;
    7. bool isFlag = true;
    8. String name = "Hello";
    9. Console.WriteLine("num1= "+ num1);
    10. Console.WriteLine("num2=" + num2);
    11. Console.WriteLine("isFlag=" + isFlag);
    12. Console.WriteLine("name=" + name);
    13. }
    14. }

    四、常量
    const 数据类型 常量名 = 值;
    定义常量时必须赋值

    五、变量命名规则
    Pascal 命名法是指每个单词的首字母大写;Camel 命名法是指第一个单词小写,从第二个单词开始每个单词的首字母大写。
    1) 变量的命名规则
    变量的命名规则遵循 Camel 命名法,并尽量使用能描述变量作用的英文单词。例如存放学生姓名的变量可以定义成 name 或者 studentName 等。另外,变量名字也不建议过长, 最好是 1 个单词,最多不超过 3 个单词。
    2) 常量的命名规则
    为了与变量有所区分,通常将定义常量的单词的所有字母大写。例如定义求圆面积的 n 的值,可以将其定义成一个常量以保证在整个程序中使用的值是统一的,直接定义成 PI 即可。
    3) 类的命名规则
    类的命名规则遵循 Pascal 命名法,即每个单词的首字母大写。例如定义一个存放学生信息的类,可以定义成 Student。
    4) 接口的命名规则
    接口的命名规则也遵循 Pascal 命名法,但通常都是以 I 开头,并将其后面的每个单词的首字母大写。例如定义一个存放值比较操作的接口,可以将其命名为 ICompare。
    5) 方法的命名规则
    方法的命名遵循 Pascal 命名法,一般采用动词来命名。例如实现添加用户信息操作的方法,可以将其命名为 AddUser。

    6、if else

    if (布尔表达式) {
        语句块;
    } else if (布尔表达式) {
        语句块;
    } else {
        语句块;
    }
    

    7、switch case

    switch(表达式){
        case 值1:
            代码块1;
            break;
        case 值2:
            代码块2;
            break;
        default:
            代码块2;
            break;
    }
    

    在这里,switch 语句中表达式的结果必须是整型、字符串类型、字符型、布尔型等数据类型。
    如果 switch 语句中表达式的值与 case 后面的值相同,则执行相应的 case 后面的语句块。
    如果所有的 case 语句与 switch 语句表达式的值都不相同,则执行 default 语句后面的值。
    default 语句是可以省略的。需要注意的是,case 语句后面的值是不能重复的。

    8、for循环

    for(表达式 1 变量赋值; 表达式 2 循环条件; 表达式3 改变变量大小)
    {
        表达式 4 满足循环条件时执行;
    }
    

    9、while循环

    while(布尔表达式)
    {
        语句块;
    }
    

    10、do while 循环

    do
    {
        语句块;
    }while(布尔表达式);
    

    11、break
    break 语句用于中断循环,使循环不再执行。如果是多个循环语句嵌套使用,则 break 语句跳出的则是最内层循环。
    12、continue
    continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强制开始下一次循环。
    13、goto

    goto Labell;
        语句块 1;
    Labell
        语句块 2;
    goto 语句不能跳转到循环语句中,也不能跳出类的范围,goto 语句并不常用