前言
本文为C#入门知识,是在有一定C语言或C++基础上进行的总结,因此会省略许多C语言的基础知识,但是对一些C#特有或者是C语言中比较少见或重要的知识也会归纳到博文里。
一、输入输出
Console.WriteLine()打印一行信息,自动换行
Console.Write()打印信息完成后不会自动换行
Console.ReadLine()用户输入,点击回车结束
Console.ReadKey()用户按键盘任意一下就会结束
二、变量
1.折叠代码
作用:将中间包裹的代码折叠起来 避免代码凌乱 编辑时起作用
#region MyRegion...#endregion
2.声明变量
公式:变量类型 变量名 = 初始值;
变量类型有14种:
a.有符号的整型变量
能存储正负数和0 下面给出大概范围(赋值时超出范围会报错)
sbyte -128~-127
int -21亿~21亿
short -32768~32767
long -9百万兆~9百万兆
示例代码
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 变量类型 变量名 = 初始值;
const int i = 10;
四、转义字符
公式:\字符
常用转义字符如下表
五、类型转换
1.隐式转换
规则:(不同类型之间自动转换)大范围转小范围
a.同类型之间转换
long a = 1; int b = 2; a = b;//int隐式转换为long b = a;//这句是不对的!小范围不能转大范围
对于浮点数之间,要注意decimal类型无法用隐式转换去存储double和float,但float可以转换成double。特殊类型bool、char和string之间不存在隐式转换
b.不同大类型之间的转换
!有符号的变量不能隐式转换成无符号的变量
错误代码示例:
ushort us2 = 1; sbyte sb2 = 1; us2 = sb2;//错误代码!不能转换
us2 = sb2;//错误代码!不能转换
!无符号的变量可以转有符号的变量,但前提是有符号的变量覆盖的范围要包括无符号的类型
int i2 = 1; uint ui2 = 1; byte b2 = 1; i2 = ui2;// 错误!无法覆盖无符号数的全部范围 i2 = b2;// 正确代码
浮点数可以装载任何类型的整数,不管是无符号还是有符号 (decimal不能隐式存储float和double 但可以隐式存储整型)
整数不能隐式存储浮点数
bool类型没有办法和其他类型相互隐式转换
char没法隐式存储其它类型的变量 但char类型可以转为int类型,int类型又可以隐式转换为其他类型
2.显式转换
需要手动处理 强制转换
公式:变量类型 变量名 = (变量类型)变量
a.括号强转
(1)相同大类之间(无符号整型、有符号整型、浮点数) 括号强转可能出现范围问题造成异常
short s = 1; int i = 1; s = (short)i;
(2)不同类型之间
有符号和无符号之间同样可以强转 但可能出现范围问题
浮点数转成整数主要是精度问题
bool、string不支持强转
b.Parse法强转 把字符串类型转换为对应的类型
变量类型.Parse("字符串") 字符串必须能够转换成对应的类型,不然会报错
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目标类型(变量或常量) 把字符串转对应类型要合法合规
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(); //任何类型都可以用
string str = 1.ToString(); Console.WriteLine("123"+1+true);//这句话是正确的,后面两个会默认调用ToString方法
两个会默认调用ToString方法
六、异常捕获
通过异常捕获,避免代码报错时程序卡死
基本语法:
try {//希望进行异常捕获的代码块//如果出错执行catch中的 } catch {//catch(Excepetion e) 具体报错跟踪 通过e得到具体错误信息 } //可选部分 finally {//不管有没有错都会执行 }
七、算术运算符
与C语言无区别
八、字符串拼接
1.string可以通过+来进行字符串拼接
string str = "123"; str = str + "456";//正确 str = str + 1;//正确,默认调用1.ToString(); str += "1" + 4 + true;//正确,复合运算和ToString()都起作用
用
2.字符串拼接方式2
string.Format("待拼接内容",内容1,内容2);
想要被拼接的内容用占位符替代{数字}:0~n 依次往后
string str2; str2 = string.Format("我是{0},我今年{1}岁,我想要{2}","Daniel",18,"study");
aniel",18,"study");
3.控制台打印拼接
后面的内容比占位符多不会报错,比占位符少则会报错
Console.WriteLine("A{0},B{1},C{2}",1,ture,false);
九、条件运算符
符号与C语言相同
1.不同数值类型之间
规则:可以随意进行条件运算符比较
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是特殊的整型,因此它既可以和自己同类型比较 还可以和数值类型进行比较 还可以和字符类型进行大小比较
char c = 'a'; result = c > 123; result = c > 'B';
十、逻辑运算符
逻辑与:&& 逻辑或:|| 逻辑非:!
符号和规则与C语言中相同
1.注意
逻辑运算符当中逻辑非(!)的优先级最高 逻辑与(&&)优先级高于逻辑或(||)
逻辑运算符优先级要低于条件运算符和算术运算符
2.逻辑运算符短路规则
只要逻辑与或者逻辑或左边满足了条件 右边就不需要再执行
比如逻辑与是有假则假,左边表达式为假,右边便不需要再执行
十一、位运算符
规则:连接两个数值进行位计算 将数值转为2进制
1.位与运算 &
规则:有0则0
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语言