C#底层知识
公共语言运行库
.Net Framework
1、基本数据类型
开发工程中:f1可以查看文档
命名空间不允许以数字开头,所以我们创建好之后,会默认在前面加_,系统加的
int a; 整数 2的10,取值范围:正负20多亿
double a; 小数 精度 17位到18位
char a; 字符型,只能存储一个字符,并且这个字符必须用单引号包住
string 类型:字符串,可以由0个或者多个字符链接起来。
decimal: 存储金钱,精度高。28位到29位。因为钱比较敏感
decimal money;
money = 1000;
money = 1000.25m;// 如果是double,那么必须后面加符号m/M
2、变量的声明方法
第一种:先声明,后赋值
int a;
a = 100;
第二种:声明的同时赋值
int a = 200;
第三种:一次性声明多个相同类型的变量可用都好分割
int a, b;
int age = 10, height = 2, results = 99
Console.WriteLine(b);
Console.ReadKey();
3、C#命名两条规定,三条注意:
两条规定:
1、必须以“字母” _或者@符号开头
2、后面可以跟任意字母,数字,下划线
可以用中文,但是不要模仿
三条注意:
你起的变量名不要与C#系统中的关键字重复
大小写是敏感的
同一个变量名不允许重复定义
举例:
string name = “李四"
string name = “张三"
这里运行就会报错
但是如果想让name变成 “张三”
只需要name = “张三” 这属于重新赋值
4、+以及占位符
在C#中,具有两重意思,当加号两边是数字类型的时候,那么就是数学的意义。
如果加号两边的数据,有一个是字符类型,那么就是连接的意义!
Console.WriteLine("我的名字"+age+",性别”+sex+",工资”+wage+"元.");
占位符{}
占位符可以重复使用
Console.WriteLine("我的名字i{0},性别{1},工资{2},name, age, wage);
Console.WriteLine()
有多个参数时,输出都是第一个参数中的内容,
从第二个参数开始,都是用来替换第一个参数中的占位符的值,
所以从第二个参数开始,要不要输出,就要看第一个参数中有没有相关的占位符。
Console.Write(“我的名字“+name+",性别"+sex+",年龄"+age+",工资"+wage);
Console.WriteLine("我的名字i{0}{0}{0},性别{1}{1},工资{2},name, age, wage);
没用到的变量不会出错
Console.Write( "{0}我的名字"+name,”年龄“+sex);
Console.Write("{0},我的名字" + name, "xingbie"+sex);
5、变量的交换:
int a = 18;
int b = 10;
int temp;
temp = a;
a = b;
b = temp;
Console.WriteLine("a = {0}, b = {1}",a, b);
Console.ReadKey();
6、捕获用户输入
string name = "zhangsan";
int age = 18;
string input; // 定义一个字符串类型的变量,来存储用户的输入
string phoneNumber = "18034795123";
input = Console.ReadLine(); // 存储用户的输入
Console.WriteLine("我的名字{0},性别{1},我的年龄{2},我想吃{3}",phoneNumber,name,age,input);
Console.ReadKey();
或者直接赋值:
string input = Console.ReadLine(); // 存储用户的输入
7、转义字符
转义字符是一个字符,由一个+一个字母来组成具有特殊意义的一个字符
1、常用的转义字符:
\n (另起一行)
\b(退格,不管前面有没有字符,都会退一格,覆盖执勤的)
\t(tab键,由多个空格组成一个字符,具有行与行支架你的对齐功能)
\\ \(两个杠表示一个)"
Console.WriteLine("抗战英雄,痛恨"日本人",因为他的亲人被杀害");
Console.ReadKey();
char ch = ‘\”’; // 转义其实就是一个char类型。
2、@
1.字在字符串前面表示字符串中的\不转义。字符串中如果有,则不再理解为转义字符
Console.WriteLine(@"抗战英雄,痛恨"日本人",因为他的亲人被杀害");
如果前面有@符号,那么我们可以使用两个 ” “ 字符代表一个。
Console.WriteLine(@"我是中国人,痛恨""侵略我们的日本"",虽然他们很会伪装");
2.另一种含义:可以使字符串换行
Console.WriteLine(@"dadsdfdgfdghf
asddsda
asdadadadadasdd
addadaa");
8、算术运算符:
+、-、*、/、% 这五种都是二元运算符,要求:参与的两个操作数类型必须相同,并且结果也与操作数相同。
在算术表达式中,改变计算优先级,使用()来改变。
计算机会自动提升参与计算的数据类型
1、参与运算的两个数据类型必须相兼容。
2、一边的数据类型比另一个数据类型大,那么就会将小的类型提升为大的类型,精度不会丢失!
凡是有可能丢失数据精度的转换,都不会自动完成!
9、比较运算符
>
<
>=
<=
!=
==
10、逻辑运算符
&&
且
||
或
!
非
11、选择结构
if结构
if-else结构
if-else if结构
switch-case结构
12、循环结构
for循环
while循环
do-while循环
for each循环
13、总结
强制类型转换:只需要在前面int b = (int)3.14,
关于字符串转换成其他类型:Convert.ToInt32(待转换的字符串);
string convert = “90”;
int i = Conver.ToInt32(convert); // 这就把string类型转成int 类型了
其他类型转换成字符串 Convert.ToString,每种类型还有.ToString()方法
一切类型都可以转成字符串。
int a = 10;
int b = 20;
Console.WriteLine(a.ToString() + b);
Console.ReadKey();
14、异常捕获机制
try
{
有可能出现的错误
}catch
{
如果try中的代码出问题,那么就执行这个里面的
}
try
{
Console.WriteLine("请输入你的姓名");
string name = Console.ReadLine();
Console.WriteLine("请输入你的语文成绩");
int Y = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入你的数学成绩");
int S = Convert.ToInt32(Console.ReadLine());
int Z = Y + S;
Console.WriteLine("{0}您输入的总成绩为" + Z, name);
}
catch
{
Console.WriteLine("输入错误,重新输入成绩");
}
Console.ReadKey();
小练习:
1、1000天是几周?
Console.WriteLine("请输入一个数字");
int days =Convert.ToInt32( Console.ReadLine());
int month = days / 30;
int weak = days % 30 / 7;
int day = days % 30 % 7;
2、23233243秒,是几天几小时几分几秒?
Console.WriteLine("请输入秒数");
int second = Convert.ToInt32( Console.ReadLine());
int day = second / (60 * 60 * 24);
second = second % (60 * 60 * 24); // 剩余秒数
int hours = second /(60 * 60);
second = second % (60 * 60);
int minutes = second / 60;
int seconds = second % 60;
Console.WriteLine("{0}秒是{1}天{2}小时{3}分{4}秒",second,day,hours,minutes,seconds);
15、const常量
什么是常量?
在程序运行过程中不可修改的量。
语法:
[访问修饰符] const 数据类型 常量名
public const int number = 60;
注意点:
- 常量必须在声明时初始化
- 常量只能用于基本类型,不能用在类和结构上。
一个人的路需要更多人的陪伴:欢迎加群: 134688909 一起交流,分享心得,获取项目资源。