常用快捷键

快速对齐代码 Ctrl+K+D 出现语法错误时不能对齐,只能先生成解决方案再对齐
保存 Ctrl+S
快速弹出智能提示 Ctrl+J
光标出现在文档最后 End 想要选中这一行 Shift+Home
光标出现在文档最前 Home 想要选中这一行 Shift+End
选中多行则按上下箭头
注释所选代码 Ctrl+K+C
取消对所选代码的注释 Ctrl+K+U
转到帮助文档 F1
折叠冗余代码 #Region(可备注) 和 #EndRegion

变量

是什么

用来在计算机当中存储数据

存储变量的语法

变量类型 变量名;
变量名=值;

//官方语言:声明或定义了一个int 类型的变量
int number; //在内存中开辟了一块能够存储整数的空间
//官方语言:给这个变量进行赋值
number = 100; //表示把100存储到了这块空间内

简写形式 **声明并且给变量赋值
变量类型 变量名=值;
int** n = 100;

变量的几种类型

变量类型 规则 举例
int整数类型 只能存储整数 int num=10;
double小数类型 既能存储整数,也能存储小数
(小数点后15-16位数)
double a =1;
double b= 1.5;
string字符串类型/羊肉串 用来存储多个文本,也可以存储空
值必须被英文半角双引号引起来
string zsName = “张三”;
string s = “”; //可以存储
string的首字母大写String就是 类
char字符类型/羊肉 只能存单个字符
值必须被英文半角单引号引起来
char gende = ‘男’;
不能存
decimal金钱类型 用来存储金钱,值后需要加一个m decimal money = 5000 m;
bool布尔类型 用来描述对或错
只有两个值:True、False
bool b = 1500 > 1;
Console.WriteLine(b);
Console.ReadKey();
结果:True

变量的使用规则

如果你要使用变量的话,应该要先声明赋值使用

变量的命名规则

*首先要保证的就是这个变量的名字要有意义**。

  1. 现阶段给变量起名字的时候都以字母开头
  2. 后面可以跟任意“字母”、数字、下划线.

注意:

  • 你起的变量名不要与c#系统中的关键字重复.
  • 在c#中,大小写是敏感的. HTML≠html
  • 同一个变量名不允许重复定义(先这么认为,不严谨)

给变量起名字的时候要满足两个命名规范:
1、Camel 骆驼命名规范。要求变量名首单词的首字母要小写,其余每个单词的首字母要大写。
多用于给变量命名。highSchoolStudent
2、Pascal 命名规范:要求每个单词的首字母都要大写,其余字母小写。多用于给类或者方法命名。HighSchoolStudent

波浪线

红色波浪线:代码出现了语法错误
绿色波浪线、警告线:语法没有错误,只是提示你有可能,但是不一定出现错误

异常/bug

语法上并没有任何错误,只不过在程序运行的期间,由于某些原因出现了问题,使程序不能再正常的运行。

符号

注释符

基础语法 - 图1

赋值运算符

=:表示赋值的意思,表示把等号右边的值,赋值给等号左边的变量。
赋值表达式:由等号连接的表达式。

注意
每个表达式我们都可以求解除一个定值,对于赋值表达式而言,等号左边的变量的值,
就是整个赋值表达式的值。 int number=10;

+号的作用

  • 连接:当+号两边有一边是字符串的时候,+号就起到连接的作用。

string name = "李四";
Console.WriteLine("你好,"``+name``);
Console.ReadKey();

输出:你好,李四

  • 相加:两边是数字的时候

Console.ReadLine(5+5); | Console.ReadLine(5+``"``5``"``);
Console.ReadKey(); | Console.ReadKey();

输出:10 输出:55

占位符

使用方法:先挖个坑,再填个坑。

int n1 = 10;
int n2 = 20;
int n3 = 30;
Console.WriteLine("第一个数字是``{0}``,第二个数字是``{1}``,第三个数字是``{2}``",n1,n2,n3);

Console.ReadKey(); 占位符的顺序从0开始

使用占位符需要注意的地方:
1、你挖了几个坑,就应该填几个坑,如果你多填了,没效果。
如果你少填了,抛异常。
2、输出顺序:按照挖坑的顺序输出。

转义符

转义符指的就是一个’\’+一个特殊的字符,组成了一个具有特殊意义的字符。

\n 表示换行
\” 表示一个英文半角的双引号
Console.WriteLine("我想在这句话中输出英文半角``\"\"``的双引号");

\t 表示一个tab键的空格
string name1 = "张三";
string name2 ="李敏镐西都敏俊西老赵西";
string name3 ="不爱抽不舒服斯基";
string name4 = "井边溪上床下枕头边君";
Console.WriteLine("{0}``\t\t\t``{1}");
Console.WriteLine("{0}``\t``{1}");
Console.ReadKey();

\b 表示一个退格键,放到字符串的两边没有效果
Console.WriteLine("学习编程有用么?``\b``学了不一定会,会了不一定能找到工作,找到工作不一定能买的起房子,买得起房子不一定娶得到老婆,取的起老婆不一定生的了孩子,生的了孩子不一定是你的");

\r\n windows操作系统不认识\n,只认识\r\n
\ 表示一个\

@符号

  1. 取消\在字符串中的转义作用,使其单纯的表示为一个’\’

char c = '\b'; //\在里面起到了转义的作用
char c = 'bb'; //报错,字符太多

  1. 将字符串按照编辑的格式输出

Console.WriteLine("``@今天天气好晴朗
处处好风光``");
Console.ReadKey();
在表示路径的时候都用@符号

算数运算符

二元运算符(加 减 乘 除 余)

      • / %
        需要两个或以上才能完成运算的操作符

练习
某学生三门课成绩为:语文90,数学80,英语67,编程求总分和平均分
int chinese = 90;
int math = 80;
int english = 67;
Console.WriteLine("总成绩是{0},平均成绩是{1}",chinese+math+engilish,``**(chinese+math+english)/3**``);
Console.ReadKey();

不用变量来存储总分和平均分,因为占内存
变量越少越好

参与运算的操作数都是整数类型,就算结果有小数,显示出来也是整数

一元运算符(++—)

只需要一个操作数(number)就能完成的运算

基础语法 - 图2int number = 10;
it result = 10 +number++;
意思是

//int result = 10 + number;
//number++;

int number = 10;
it result = 10 +++number;
意思是
//number++;
//int result = 10 + number;

练习

int a = 5 ;
`int b = a++ ``
+++a*2+--a `**`+`**` a++;`<br />**// 5,a=6 7,a=7 6,a=6 7,****a=7 **<br />**// b= 5 + 7*2 +6 + 7=31 **<br />`Console.WriteLine("a");`<br />`Console.WriteLine(“b”);<br />Console.ReadKey();`

如果在一个表达式中,既有一元运算符,又有二元运算符,首先计算一元运算符(相当于数学自带括号)

**

优先级

先乘除,后加减,有括号先算括号里,相同级别从左至右运算
小括号可以无限制的套用,但是一定要成对出现

复合赋值运算符

基础语法 - 图3

类型转换

要求

等号两边参与运算的操作数的类型必须一致,如果不一致,满足下列条件会发生自动类型转换/隐式类型转换。

隐式类型转换/自动类型转换

条件

1、两种类型相兼容 int 和 double(都是数字类型)
2、小的转成大的(取值范围) int → double

例如

int number= 10;
double d = number;

显示类型转换/强制类型转换:丢失精度

条件

1、两种类型相兼容 int 和 double(都是数字类型)
2、大的转成小的(取值范围) double→int

语法

(待转换的类型)要转换的值;

例如

double d = 363.3;
int n =``(int)d``;
Console.WriteLine("n");
Console.ReadKey();

总结

自动类型转换:int——>double
显示类型转换:double—->int

表达式中的类型转化

如果一个操作数为double类型,则整个表达式可提升为double型

int n1 = 10;
int n2 = 3;
double d = n1 / n2; //结果输出是3,右边得到的是整型3,赋值给d也还是整型
Console.WriteLine(d);
Cosnole.ReadKey();

int n1 = 10;
int n2 = 3;
double d = n1 ``* 1.0`` / n2; //结果输出是3.n个3
Console.WriteLine(d);
Cosnole.ReadKey();

double`` n1 = 10; //n1是double类型
int n2 = 3;
double d = n1 / n2; //结果输出是double类型
Console.WriteLine(d);
Cosnole.ReadKey();

int n1 = 10;
int n2 = 3;
double d = n1 ``* 1.0`` / n2;
Console.WriteLine(``"{0:0.00}"``,d); //保留小数点后两位
Cosnole.ReadKey();

Convert

类型不兼容时,比如string与int 或者 string与double
这个时候我们可以使用一个叫做Convert的转换工厂进行转换
条件:面上要过得去,123abc转不成数字型(异常)

string→double

string s = "123";
double d = Convert .ToDouble(s);
Console.WriteLine(d);
Console.ReadKey();

string→int

string s = "123";
int d = Convert .ToInt32(s);
Console.WriteLine(d);
Console.ReadKey();

练习
让用户输入姓名,语文,数学,英语三门课的成绩,然后给用户显示,XX你的总成绩为XX分,平均成绩为XX分
**
Console.WriteLine("请输入你的姓名:");
string name = Console.ReadLine();
Console.WriteLine("请输入你的语文成绩:");
string strChinese = Console.ReadLine();
Console.WriteLine("``请输入你的数学成绩:``");
string strMath = Console.ReadLine();
Console.WriteLine("``请输入你的英语成绩:``");
string strEnglish = Console.ReadLine();
double chinese = Convert.ToDouble(strChinese);
double math = Convert.ToDouble(strMath);
double english = Convert.ToDouble(strEnglish);
double sum = chinese + math + english;
double avg = sum / 3; //整体是double类型,结果也是double类型
//由于字符串直接用+号的话,最终会变成连接的形式
//在需要拿字符串类型进行运算时,需要先将字符串类型转换为数字型
Console.WriteLine("{0}你的总成绩为{1}分,平均成绩为{2}分",name,sum,avg);
Console.ReadKey();

关系运算符

用来描述两个事物之间的关系


<
>=
<=
==
!=

关系表达式:由关系运算符连接的表达式

bool b = 20 ==20;
Console.WriteLine(b);
Console.ReadKey(); //结果:True

逻辑运算符

&&与
||或
!非
逻辑运算符两边放的一般都是关系表达式或者bool类型的值
5>3 && true 整体都对的时候就是true
3>5 || false
逻辑表达式的结果同样也是bool类型

逻辑表达式:与逻辑运算符连接的表达式