前言
本文为C#入门知识,是在有一定C语言或C 基础上进行的总结,因此会省略许多C语言的基础知识,但是对一些C#特有或者是C语言中比较少见或重要的知识也会归纳到博文里。
一、输入输出
- Console.WriteLine()打印一行信息,自动换行
- Console.Write()打印信息完成后不会自动换行
- Console.ReadLine()用户输入,点击回车结束
- Console.ReadKey()用户按键盘任意一下就会结束
二、变量
1.折叠代码
作用:将中间包裹的代码折叠起来 避免代码凌乱 编辑时起作用
代码语言:javascript复制#region MyRegion
...
#endregion
2.声明变量
公式:变量类型 变量名 = 初始值;
变量类型有14种:
a.有符号的整型变量
能存储正负数和0 下面给出大概范围(赋值时超出范围会报错)
- sbyte -128~-127
- int -21亿~21亿
- short -32768~32767
- long -9百万兆~9百万兆
示例代码
代码语言:javascript复制sbyte a = 1;
Console.WriteLine("存储的数:" a); //输出之间的连接用
b.无符号的整型变量
能存储一定范围0和正数
- byte 0~255
- uint 0~42亿
- ushort 0~65535
- ulong 0~18百万兆
c.浮点数
- float 存储7或8位有效数字,具体取决于编译器 四舍五入 从左到右非0数开始算有效数字
- double 存储15~17位有效数字 C#中声明小数默认double类型
- decimal 存储27~28位
float f = 0.1234f; //后面要加f 大小写均可
double d = 0.12456434;
decimal de = 0.124543534234t254m; //后面要加m 大小写均可
d.特殊类型
- bool 变量值为true或false 表示真假数据类型
- char 存储单个字符 单引号括住要赋的值
- string 存储字符串 双引号括住要赋的值
string s1="hello", s2="world", s3="good"; //多个变量同时声明
三、常量
常量的声明 (特点:必须初始化、不能被修改)
const 变量类型 变量名 = 初始值;
代码语言:javascript复制const int i = 10;
四、转义字符
公式:字符
常用转义字符如下表
单引号 | ' |
---|---|
双引号 | " |
换行 | n |
斜杠 | \ |
Tab制表 | t |
退格 | b |
五、类型转换
1.隐式转换
规则:(不同类型之间自动转换)大范围转小范围
a.同类型之间转换
代码语言:javascript复制long a = 1;
int b = 2;
a = b;//int隐式转换为long
b = a;//这句是不对的!小范围不能转大范围
对于浮点数之间,要注意decimal类型无法用隐式转换去存储double和float,但float可以转换成double。特殊类型bool、char和string之间不存在隐式转换
b.不同大类型之间的转换
!有符号的变量不能隐式转换成无符号的变量
错误代码示例:
代码语言:javascript复制ushort us2 = 1;
sbyte sb2 = 1;
us2 = sb2;//错误代码!不能转换
!无符号的变量可以转有符号的变量,但前提是有符号的变量覆盖的范围要包括无符号的类型
代码语言:javascript复制int i2 = 1;
uint ui2 = 1;
byte b2 = 1;
i2 = ui2;// 错误!无法覆盖无符号数的全部范围
i2 = b2;// 正确代码
- 浮点数可以装载任何类型的整数,不管是无符号还是有符号 (decimal不能隐式存储float和double 但可以隐式存储整型)
- 整数不能隐式存储浮点数
- bool类型没有办法和其他类型相互隐式转换
- char没法隐式存储其它类型的变量 但char类型可以转为int类型,int类型又可以隐式转换为其他类型
2.显式转换
需要手动处理 强制转换
公式:变量类型 变量名 = (变量类型)变量
a.括号强转
(1)相同大类之间(无符号整型、有符号整型、浮点数) 括号强转可能出现范围问题造成异常
代码语言:javascript复制short s = 1;
int i = 1;
s = (short)i;
(2)不同类型之间
- 有符号和无符号之间同样可以强转 但可能出现范围问题
- 浮点数转成整数主要是精度问题
- bool、string不支持强转
b.Parse法强转 把字符串类型转换为对应的类型
变量类型.Parse("字符串") 字符串必须能够转换成对应的类型,不然会报错
代码语言:javascript复制int i4 = int.Parse("123");
float f3 = float.Parse("1.232");
bool b = bool.Parse("true");
int i4 = int.Parse("123.45");//错误语句,会报错!
short s4 = short.parse("300000");//错误语句,超出范围,会报错!
c.Convert法
更准确的各类型之间相互转换
Convert.To目标类型(变量或常量) 把字符串转对应类型要合法合规
代码语言:javascript复制int a = Convert.ToInt32("12");
int a = Convert.ToInt32(12.2f);//正确语句 且Convert精度更高,可以四舍五入
int a = Convert.ToInt32(ture);//正确语句 true转为1,false转为0
int a = Convert.ToInt32('a');//正确语句 char转为对应ASCII码
int a = Convert.ToInt32("12.2");//错误,不合法转换
- Convert其他方法ToSByte()、ToInt16()、ToInt64() //16代表short,32代表int,64代表long
- 同理如果是无符号类型ToByte()、ToUInt16/32/64()
- 浮点数:ToSingle()、ToDouble()、ToDecimal()
- 特殊类型:ToBoolean()、ToChar()、ToString()
d.其他类型转string
作用是拼接打印
变量.ToString(); //任何类型都可以用
代码语言:javascript复制string str = 1.ToString();
Console.WriteLine("123" 1 true);//这句话是正确的,后面两个会默认调用ToString方法
六、异常捕获
通过异常捕获,避免代码报错时程序卡死
基本语法:
代码语言:javascript复制try
{
//希望进行异常捕获的代码块
//如果出错执行catch中的
}
catch
{
//catch(Excepetion e) 具体报错跟踪 通过e得到具体错误信息
}
//可选部分
finally
{
//不管有没有错都会执行
}
七、算术运算符
与C语言无区别
八、字符串拼接
1.string可以通过 来进行字符串拼接
代码语言:javascript复制string str = "123";
str = str "456";//正确
str = str 1;//正确,默认调用1.ToString();
str = "1" 4 true;//正确,复合运算和ToString()都起作用
2.字符串拼接方式2
string.Format("待拼接内容",内容1,内容2);
想要被拼接的内容用占位符替代{数字}:0~n 依次往后
代码语言:javascript复制string str2;
str2 = string.Format("我是{0},我今年{1}岁,我想要{2}","Daniel",18,"study");
3.控制台打印拼接
后面的内容比占位符多不会报错,比占位符少则会报错
代码语言:javascript复制Console.WriteLine("A{0},B{1},C{2}",1,ture,false);
九、条件运算符
符号与C语言相同
1.不同数值类型之间
规则:可以随意进行条件运算符比较
代码语言:javascript复制int i = 5;
float f = 1.2f
short s = 2;
byte by = 20;
uint ui = 222;
// 以下语句都成立 只要是数值都可以进行比较
result = i > f;
result = f < d;
result = f > by;
2.特殊类型char string bool
规则:只能同类型之间进行==和!=的比较
由于char是特殊的整型,因此它既可以和自己同类型比较 还可以和数值类型进行比较 还可以和字符类型进行大小比较
代码语言:javascript复制char c = 'a';
result = c > 123;
result = c > 'B';
十、逻辑运算符
逻辑与:&& 逻辑或:|| 逻辑非:!
符号和规则与C语言中相同
1.注意
逻辑运算符当中逻辑非(!)的优先级最高 逻辑与(&&)优先级高于逻辑或(||)
逻辑运算符优先级要低于条件运算符和算术运算符
2.逻辑运算符短路规则
只要逻辑与或者逻辑或左边满足了条件 右边就不需要再执行
比如逻辑与是有假则假,左边表达式为假,右边便不需要再执行
十一、位运算符
规则:连接两个数值进行位计算 将数值转为2进制
1.位与运算 &
规则:有0则0
代码语言:javascript复制int a = 1; // 002
int b = 5; // 101
int c = a & b;
// 001 & 101 = 001 所以c也就是1
2.位或运算 |
有1则1
1|0=1
3.异或运算 ^
规则:相同为0 不同为1
- 1 ^ 1 = 1
- 0 ^ 0 = 1
4.位取反 ~ (了解即可)
写在数值前面 将数值转为2进制
0变1 1变0 涉及补码
5.左移<< 和右移>> (了解即可)
让一个数的2进制进行左移和右移
左移几位 右侧加几个0
右移几位 右侧去掉几个数
十二、三目运算符
原理等同C语言
十三、 if语句
原理等同C语言
十四、switch语句
原理等同C语言
十五、while语句
原理等同C语言
十六、do while语句
原理等同C语言
十七、for循环
原理等同C语言