C#-基础语法
数据存储部分:
一、基本数据类型【含枚举、结构体】
1. 整型
- 整型就是存储整数的类型,按照存储值的范围不同,C# 语言将整型分成了 byte 类型、short 类型、int 类型、long 类型等,并分别定义了有符号数和无符号数;区别在于有没有 u 前缀,基本上和 C语言一致
| 类 型 | 取值范围 | 
|---|---|
| sbyte | 有符号数,占用1个字节,-27〜27-1 | 
| byte | 无符号数,占用1个字节,0〜28-1 | 
| short | 有符号数,占用2个字节,-215〜215-1 | 
| ushort | 无符号数,占用2个字节,0〜216-1 | 
| int | 有符号数,占用4个字节,-231〜231-1 | 
| uint | 无符号数,占用4个字节,0〜232-1 | 
| long | 有符号数,占用8个字节,-263〜263-1 | 
| ulong | 无符号数,占用8个字节,0〜264-1 | 
2. 浮点型
- 浮点型是指小数类型,浮点型在 C# 语言中共有两种,一种称为单精度浮点型,一种称为双精度浮点型。没错,就是 float 和double,你猜的没错
| 类 型 | 取值范围 | 
|---|---|
| float | 单精度浮点型,占用4个字节,最多保留7位小数 | 
| double | 双精度浮点型,占用8个字节,最多保留16位小数 | 
3. 字符型
- 字符型只能存放一个字符,它占用 两个字节,能存放一个汉字;例如 ‘a’、‘中’ 等 ;使用的是 单括号括起来的;区别字符串
字符类型要注意还有转义字符;和C完全一样
| 转义字符 | 等价字符 | 
|---|---|
| ’ | 单引号 | 
| " | 双引号 | 
| \ | 反斜杠 | 
| \0 | 空 | 
| \a | 警告(产生蜂鸣音) | 
| \b | 退格 | 
| \f | 换页 | 
| \n | 换行 | 
| \r | 回车 | 
| \t | 水平制表符 | 
| \v | 垂直制表符 | 
4. 布尔型
布尔类型使用 bool 来声明,它只有两个值,即 true 和 false
 常用于判断条件里面
5. 枚举型
- 和C语言的性质、声明完全一样;
 但是 使用的时候不需要 带enum关键字;直接使用枚举类型名就行
enum Days 
{ 
	Sun, 
	Mon, 
	Tue,
	Wed, 
	Thu, 
	Fri, 
	Sat 
}; //定义的一个星期的枚举类型
/* 使用:
Day day = Day.Sun; 即可
*/
6. 结构体
结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。和C语言的使用差不多一致,只不过不需要带关键字
struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};  
/* 调用
-- 结构体赋值
Books Book1;
Book1.title = "C Programming";
Book1.author = "Nuha Ali";
....
* 注意结构体赋值一定要完全赋值,部分赋值会出错误、或者设置默认值也行
-- 结构体获取值
Console.WriteLine( "Book 1 title : {0}", Book1.title);
Console.WriteLine("Book 1 author : {0}", Book1.author);
....
*/
二、变量
-  变量可以理解为存放数据的 容器,并且在将值存放到变量中时还要为变量指定数据类型。 
-  变量和常量是相对的:变量是指所存放的值是允许改变的,而常量表示存入的值不允许改变。 
1、变量定义
如
double number;
string name;
int age, phoneNumber;
byte sex;
2、变量使用
- 赋值:
//声明时赋值
double number = 43543.64576;
string name = "法外狂徒张三";
int age = 10, phoneNumber = 1241543;
byte sex = 1;
//其他地方赋值
name = "罗老师的张三日记";
age += 40;
phoneNumber++;
- 读值
Console.WriteLine("number = {0}", number);
Console.WriteLine("name = {0}", name);
C#变量命名规则(命名规范)
 这里推荐这个网站:http://c.biancheng.net/view/2795.html
三、常量
常量和变量都是用来存储数据的容器;常量(Constant)中存放的值不允许改变。也即是只读的
定义很简单:
- 需要注意的是,在定义常量时必须为其赋值,因为不赋值的话以后就再也不能赋值了。另外,也可以同时定义多个常量。
使用和变量使用差不多:但是只能放在赋值号的右边
//求一个园的面积和周长
class Program
{
    static void Main(string[] args)
    {
        const double PI = 3.14;
        int r = 3;  //存放半径
        Console.WriteLine("圆的周长是:" + 2 * PI * r);
        Console.WriteLine("圆的面积是:" + PI * r * r);
    }
}
数据处理部分:
一、运算符
1. 算术运算符
| 运算符 | 说 明 | 
|---|---|
| + | 对两个操作数做加法运算 | 
| - | 对两个操作数做减法运算 | 
| * | 对两个操作数做乘法运算 | 
| / | 对两个操作数做除法运算 | 
| % | 对两个操作数做取余运算 | 
-  当使用 / 运算符时也要注意操作数的数据类型,如果两个操作数的数据类型都为整数,那么结果相当于取整运算,不包括余数;而两个操作数中如果有一个操作数的数据类型为浮点数,那么结果则是正常的除法运算。 
-  当使用 % 运算符时,如果两个操作都为整数,那么结果相当于取余数。经常使用该运算符来判断某个数是否能被其他的数整除。 
2. 逻辑运算符
| 运算符 | 含义 | 说明 | 
|---|---|---|
| && | 逻辑与 | 如果运算符两边都为 True,则整个表达式为 True,否则为 False;如果左边操作数为 False,则不对右边表达式进行计算,相当于“且”的含义 | 
| ‖ | 逻辑或 | 如果运算符两边有一个或两个为 True,整个表达式为 True,否则为 False;如果左边为 True,则不对右边表达式进行计算,相当于“或”的含义 | 
| ! | 逻辑非 | 表示和原来的逻辑相反的逻辑 | 
3. 比较运算符
| 运算符 | 说 明 | 
|---|---|
| == | 表示两边表达式运算的结果相等,注意是两个等号 | 
| != | 表示两边表达式运算的结果不相等 | 
| > | 表示左边表达式的值大于右边表达式的值 | 
| < | 表示左边表达式的值小于右边表达式的值 | 
| >= | 表示左边表达式的值大于等于右边表达式的值 | 
| <= | 表示左边表达式的值小于等于右边表达式的值 | 
4. 位运算符
| 运算符 | 说 明 | 
|---|---|
| & | 按位与。两个运算数都为 1,则整个表达式为 1,否则为 0;也可以对布尔型的值进行比较,相当于“与”运算,但不是短路运算 | 
| │ | 按位或。两个运算数都为 0,则整个表达式为 0,否则为 1;也可以对布尔型的值进行比较,相当于“或”运算,但不是短路运算 | 
| ~ | 按位非。当被运算的值为 1 时,运算结果为 0;当被运算的值为 0 时,运算结果为 1。该操作符不能用于布尔型。对正整数取反,则在原来的数上加 1,然后取负数;对负整数取反,则在原来的数上加 1,然后取绝对值 | 
| ^ | 按位异或。只有运算的两位不同结果才为 1,否则为 0 | 
| << | 左移。把运算符左边的操作数向左移动运算符右边指定的位数,右边因移动空出的部分 补 0 | 
| >> | 有符号右移。把运算符左边的操作数向右移动运算符右边指定的位数。如果是正值,左侧因移动空出的部分补 0;如果是负值,左侧因移动空出的部分补 1 | 
| >>> | 无符号右移。和 >> 的移动方式一样,只是不管正负,因移动空出的部分都补 0 | 
5. 赋值运算符
| 运算符 | 说 明 | 
|---|---|
| = | x=y,等号右边的值给等号左边的变量,即把变量 y 的值赋给变量 x | 
| += | x+=y,等同于 x=x+y | 
| -= | x-=y,等同于 x=x-y | 
| *= | x*=y,等同于 x=x*y | 
| /= | x/=y,等同于 x=x/y | 
| %= | x%=y,等同于 x=x%y,表示求 x 除以 y 的余数 | 
| ++ | x++ 或 ++x,等同于 x=x+1 | 
| - - | x-- 或 --x,等同于 x=x-1 | 
和C语言一样
 需要注意的是,++ 和 - - 运算符放在操作数前和操作数后是有区别的,如果放在操作数前,需要先将操作数加 1 或减 1,然后再与其他操作数进行运算;如果放在操作数后,需要先与其他操作数进行运算,然后操作数自身再加 1。
6. 优先级
这个很少考虑不知道就用 ()在复杂的表达式中多用括号来控制优先级,以增强代码的可读性。
| 运算符 | 结合性 | 
|---|---|
| .(点)、()(小括号)、[](中括号) | 从左到右 | 
| + (正)、-(负)、++ (自增)、–(自减)、~(按位非)、!(逻辑非) | 从右到左 | 
| * (乘)、/ (除)、% (取余) | 从左向右 | 
| + (加)、-(减) | 从左向右 | 
| <<、>>、>>> | 从左向右 | 
| <、<=、>、>= | 从左向右 | 
| ==、!= | 从左向右 | 
| & | 从左向右 | 
| │ | 从左向右 | 
| ^ | 从左向右 | 
| && | 从左向右 | 
| ‖ | 从左向右 | 
| ?: | 从右到左 | 
| =、+=、-=、*=、/=、%=、&=、 | =、^=、~=、<<=、>>=、>>>= | 
二、条件判断
1. 三元运算符
布尔表达式 ? 表达式 1: 表达式 2
- 布尔表达式:判断条件,它是一个结果为布尔型值的表达式。
- 表达式 1:如果布尔表达式的值为 True,该三元运算符得到的结果就是表达式 1 的运算结果。
- 表达式 2:如果布尔表达式的值为 False,该三元运算符得到的结果就是表达式 2 的运算结果。
1 > 2 ?  Console.WriteLine("True") :  Console.WriteLine("False")
2. if else
1. 单一 的 if 语句
if(条件)
{
	语句块
}
2. 二选一 的 if 语句
if(条件)
{
	语句块1
}else
{
	语句块2
}
3. 多选一 的 if 语句
if(条件1)
{
	语句块1
}else if(条件1)
{
	语句块2
}
....
else
{
	语句块3
}
4. 嵌套 if
if(条件)
{
	if(条件)
	{
		语句块
	}
	....
}
....
else
{
	语句块
}
3. switch case
switch是条件跳转,必须跟break不然会变成多选
 C#的case和C语言的基本一致,但是C#的的更强大
 switch 语句中表达式的结果必须是整型、字符串类型、字符型、布尔型等数据类型。
switch(表达式)
{
    case 值 1:
        语句块 1;
        break;
    case 值 2:
        语句块 2;
        break;
        ...
    default:
        语句块 n;
        break;
}
三、循环
1. for循环
for(条件 1; 条件式 2; 条件3)
{
    语句块;
}
//与C语言一致
for(int i = 0; i < 10; i++)
{
    语句块;
}
2. while循环
while(条件)
{
    语句块;
}
3. do while循环
do
{
    语句块;
}while(条件);










