C#
简介
C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言,它不仅去掉了 C++ 和 Java 语言中的一些复杂特性,还提供了可视化工具,能够高效地编写程序。
C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。
C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。
C#关键字
🍺C#初次体验
⌨使用Visual Studio创建第一个项目 打印Hello world!
1.1 创建项目
打开VS->新键项目->找到控制台程序(.NET Framework)->下一步->创建
eg:
1.2 打印Hello world!
🔔如何编译当前程序?
1.C#程序–人能看懂,机器看不懂
2.执行程序的确是机器
3.需要将C#程序编译(翻译)成机器能够读懂的语言(二进制)
4.这样程序就可以被机器执行了
5.Windows:生成->生成解决方案 Ctrl + Shift + B
🔔如何运行当前程序?
1.Windows:运行而不调试(Ctrl + F5/F5)
eg:
🔔注释
1.注释是不会被编译的,更不会被执行
2.注释的作用:
3.解释说明当前的代码是什么含义
3.1、强调
1.在目前学习代码阶段,保证你写的每行代码都要配一行注释
2.解释说明,你这句代码是什么含义
3.1、暂时取消某些代码的执行
快捷键:
注释当前选中行的代码:Ctrl + K + C
取消注释当前选中行的代码:Ctrl + K + U
🍺MSDN
⌨MSDN地址
https://docs.microsoft.com/zh-cn/dotnet/api/system.reflection.fieldinfo?view=netframework-4.7.2
🍺数据类型
⌨数据的量级
- 1024字节(byte)=1KB
- 1024KB = 1MB
- 1024MB = 1GB
- 1024GB = 1TB
- 1024TB = 1PB
⌨数据类型
bool 0000 0000 false 0000 0001 true
sbyte 有符号的8位整数 000 0000 — 111 1111 (0-127)
1.第一位表示符号(+ -)
2.特殊0:1000 0000 和 0000 0000
3.硬性规定:1000 0000 表示-128
4.取值范围:-128—+127
byte无符号的8位整数
1.0000 0000 —— 1111 1111
2.取值范围 0 ——255
short有符号的16位整数(文档中是Int16)
1.000 0000 0000 0000 —— 111 1111 1111 1111
2.负32768到正32767
int有符号的32位整数(文档中是Int32)
最常用的整数类型
一般说整型即int类型
无特殊情况,存储一个整数都用int
int占4个字节(面试经常问)
long有符号的64位整数(文档中是Int64)
浮点数(通常理解就是生活中的小数)
float(单精度浮点数)【文档中查:Single】
一般情况下,float足够
double(双精度浮点数)【文档中查:Double】
如果需要精度更高一点,用Double
decimal(高精度浮点数)
极少用到,天文数字可能会用到这个
⌨常量、变量
程序运行期间
程序开始到程序结束
变量:在程序运行期间,可以被改变
变量的声明
数据类型 变量名 = 初值;
⌨ int a = 10;
变量可以不赋初值(在特殊情况下必须要赋初值)
不赋初值时,当前变量的值是默认值
int/float 默认值是0
char 默认值’\0’(表示空字符)
常量:在程序运行期间,不能被改变
常量的声明
const 数据类型 变量名 = 初值;
大写(潜规则)
⌨ const float money = 100.35f;
常数必须要赋初值
浮点型声明时注意:
float flo = 1.11f;【float数字后面要加f】
double damage = 1.11d【double后面要加d】
decimal damage = 1.223m【decimal后面要加m】
字符型声明注意:
字符类型(一定要用单引号括起来)
char cha = ‘name’;
常量及变量的命名规则
只能由字母、数字、@和下划线(_)这些组成
数字不能开头,⌨ 1a❌、3f❌、xiaoming1✅
@符号,要么不用,要用必须放在首位,🌰@zhansan✅,zhang@san❌
不能与系统的关键词同名,⌨ int,long,sbyte❌
变量名不能重复
中文变量名语法上是可以的,但极为不推荐
常量及变量的命名规范
全是英文单词,不要用拼音
驼峰命名法
大驼峰(每个单词的首字母大写,其余字母小写)
MyHeroDamage、HeroAttack
小驼峰:(第一个单词首字母不大写,后面每个单词的首字母大写,其余字母小写)
myHeroDamage、heroAttack【目前阶段都用小驼峰】
见名知意
yyds(你晓得这是啥?评论区见)❌
🍺运算符
⌨数据的量级
- 赋值运算符 “=”,是一个运算,将后面的结果赋给前面的变量或常量
- 前面 = 后面;后面的值赋给前面
- 前面必须是个变量【不能是具体是数值(2,3,’A‘,“123”)】
- 后面可以是具体的数值,也可以是变量,也可以是常量
⌨算术运算符
+、- 加减法
*、/ 乘除法
a / b 运算之后得到一个结果
被除数 ÷ 除数 = 商
除法有一个禁忌:除数不能为0
% 取余(做除法取余数)
5 % 3 : 5除以3,得到的余数,是结果
上面的+、-、*、/、%都是二元运算符
++运算符和–运算符
举例:a++; 等价于 a = a+1;
++、- -是一元运算符
//int showYouAge = age++;//结果是18//意味着 age++ 得到的结果是 age//解析://第一步:将age的值赋给showYouAge//第二步:age自增intshowYouAge=++age; //意味着 ++age 得到的结果是 age+1//解析://第一步:age自增//第二步:将age的值赋给showYouAge//总结://age++;++age;//++符号在前就先自增,后赋值//++符号在后就先赋值,后自增
练习题:
⌨符合运算符
- a+=b;等价于a=a+b;
- a=a+4; ==> a+=4;
- a-=b;等价于a=a-b;
- a*=b;等价于a=a*b;
- a/=b;等价于a=a/b;
- a%=b;等价于a=a%b;
⌨输入与输出
输出
Console.WriteLine();
输出内容,并换行
Console.Write();
输出内容,不换行
输入
Console.Read();
从屏幕读取一个字符,并返回该字符所对应的整型数字
Console.ReadLine();
从屏幕读取一串字符,并返回该字符串
字符串是一个数据类型
关键词string
表示一串字符
用双引号括起来
字符串相加可以得到两个字符串组合到一起的字符串
📚预编译执行 region
作用:代码分成一个区域,方便折叠和展开
区域首部:#region
区域尾部:#endregion
eg:
⌨类型转换
- 隐式转换
- 将占用字节小的、取值范围小的、精度小的,转换为占用字节大的、取值范围大的、精度高
- 不需要任何的修饰符,会自动转换
//整型//1 2 4 8//sbyte short int longsbyteenglishScore=100; //sbyte --> intintmyScore=englishScore; //int --> longlongclassScore=myScore; //int --> floatfloatnewScore=myScore; //float --> doubledoublenewClassScore=newScore;
- 显式转换(强制转换)
- 将占用字节大的、取值范围大的、精度高,转换为占用字节小的、取值范围小的、精度小的
- 需要强制转修饰符,会有精度的缺失,甚至数据的错误
- 转换情况:知道这个数字,在小的数据类型的取值范围内
//强制转换intdamage=10000; //int --> sbytesbytehealth= (sbyte)damage; //输出结果Console.WriteLine(health); //16floatmathScore=90.5f; //float --> intintmyAllScore= (int)mathScore; //会把小数点后面的内容全部舍去Console.WriteLine(myAllScore); //90
- int和char之间的类型转换
//int 和 char之间的类型转换intnum=11101; //int --> charcharletter= (char)num; //a-97Console.WriteLine(letter);
评论区请教大神!!!
int和bool之间的类型转换
不能进行转换
string与其他类型之间的转换
举例:
“false”,“true”“10”,“3.14”“A”
转换方法
System.ConvertSystem.Convert.ToBoolean() System.Convert.ToInt32() System.Convert.ToSingle() System.Convert.ToDouble() System.Convert.ToChar()
数据类型.Parse()
int.Parse() bool.Parse() float.Parse() char.Parse()
其他类型能不能转换成字符串
其他类型的变量.ToString();
⌨关系运算符 & 逻辑运算符
关系运算符:>,<,>=,<=,==,!=
逻辑运算符:逻辑运算是bool与bool之间的运算
&:与运算
true&true : truetrue&false : falsefalse&false : false
总结:一假则假
|:或运算
true|true : truetrue|false : truefalse|false : false
总结:一真则真
!:非运算
!true : false!false : true
&&:短路与运算
普通的&与运算,无论第一个条件是真是假,都会继续判断第二条件
短路与运算&&,如果判断第一个条件已经是假,则不会继续判断第二个条件
||:短路或运算
普通的|与运算,无论第一个条件是真是假,都会继续判断第二条件
短路或运算||,如果判断第一个条件已经是真,则不会继续判断第二个条件
短路&&、||
优点:第一个条件已经得知整个逻辑运算的结果,就不会去判断第二个条件了
节约了运算量
缺点:如果判断中带有运算,如果不进行第二个条件的判断,那第二个条件中的运算也不能执行
练习:👍👍👍👍👍👍
手动计算下列表达式的值和number的值,并编写程序来验证结果是否正确
①number初值为6:number++ * ++number - number-- / --number
②number初值为5:number++ > 3 | --number == 0
③number初值为2:number-- > 2 && --number == 0
④number初值为12:number++ > 10 && --number != 2 && number-- == 0 && ++number != 3
⑤number初值为0:number++ > -1 || --number <= 2 && number-- != 10
⑥number初值为0:number++ < -1 || (–number >= 2 && number-- != 10)【小括号优先级最高】