C#入门知识大总结(在C语言的基础上)

2023-10-17 15:49:11 浏览数 (1)

前言

本文为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位
代码语言:javascript复制
float f = 0.1234f; //后面要加f 大小写均可

double d = 0.12456434;

decimal de = 0.124543534234t254m; //后面要加m 大小写均可
d.特殊类型
  • bool 变量值为true或false 表示真假数据类型
  • char 存储单个字符 单引号括住要赋的值
  • string 存储字符串 双引号括住要赋的值
代码语言:javascript复制
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语言

0 人点赞