【01_C#入门到精通】新手强烈推荐:C#开发课程,一整套课程

一、
1.
.cs 类
2.
引用命名空间
3.
Main函数是程序的主入口,程序写在Main函数下才可被执行
4.
.sln : 解决方案文件
.csproj :项目文件
二、
1.
Console,WriteLine("要打印的内容");
Console,ReadKey();//暂停当前程序,等待用户按下任意键继续
三、
1.Ctrl+K+D 快速对齐
2.Shift+Home Shift+End
3.Ctrl+K+C注释选中的代码
4.Ctrl+K+U取消注释选中的代码
5.折叠冗余代码: #region #endregion
四、
1.
储存整数100
数据类型:整数
在内存中开辟的空间应该是整数类型 int
2.
存储变量的语法:
变量类型 变量名;
变量名=值;
3."="在这里并不表示等于,而是赋值,表示把等号右边的值赋值给等号左边的变量
4.数据类型
1)、整数类型:int 只能存储整数,不能存储小数。
2)、小数类型:double 既能存储整数,也能存储橡树,小数点后面的位数 15~16位。
3)、金钱类型:decimal 用来存储金钱,值后面需要加上一个m。
4)、字符串类型:string 用来存储多个文本,也可以存储空,字符串类型需要被双引号引起来
5)、字符类型:char 用来存储单个字符,最多最少只能有一个字符,不能储存空,字符类型的值需要用单引号引起来
五、
1.给变量命名的时候要满足两个规范:
1)、Camel 骆驼命名规范,要求变量名首单词的首字母要小写,其余每个单词的首字母要大写,多用于给变量或字段命名。
highSchoolStudent
2)、Pascal 命名规范:要求每个单词的首字母都要大写,其余字母小写,多用于给类或者方法命名。
HighSchoolStudent
2.赋值运算符
=; 表示赋值的意思,表示把等号右边的值赋值给等号左边的变量。
由等号连接的表达式称之为赋值表达式。
注意:每个表达式我们都可以求解除一个定值,对于赋值表达式而言,等号左边的变量的值,就是整个赋值表达式的值。
int number=10;
3.+号的作用
1)、连接:当+号两边有一边是字符串的时候,+号就起到连接的作用
2)、相加:当+两边是数字的时候,+号就起到相加的作用
4.占位符
使用方法:先挖个坑,再填个坑。
使用占位符需要注意的地方:
1、你挖了几个坑,就填几个坑,如果你多填了,没效果
如果你少填了,报异常
2、输出顺序:按照挖坑的顺序输出
3.异常
异常是指:语法上没有任何错误,只不过在程序运行期间,由于某些原因出现了问题,使程序不能再正常运行,也被称作Bug
4.转义符
转义符值得就是一个'\'+一个特殊的字符,组成了一个具有特殊含义的字符。
\n 表示换行
\" 表示一个英文半角的双引号
\t 表示一个TAB键的空格
\b 表示一个退格键,放到字符串的两边没有效果
\\ 表示一个\
@符号
1.取消\在字符串中的转义作用
2.将字符串按照编辑的原格式输出
5.算数运算符
+
-
*
/
%
6.类型转换
隐式类型转换:
我们要求等号两边参与运算的操作书的类型必须一致,如果不一致,满足下列条件会发生自动类型转换,或者称之为隐式类型转换。
两种类型兼容
列如:int 和 double 兼容(都是数字类型)
目标类型大于原类型
列如:double > int (小的转大的)
显式类型转换:
1.两种类型相兼容 int-->double
2.大的转成小的 double-->int
语法:
(待转换的类型)要转换的值;
总结:
自动类型转换:int-->double
显示类型转换:double-->int
六、
1.如果两个变量的类型相兼容,可以使用自动类型转换或者强制类型转换,但是,如果两个类型的变量不兼容,比如 string 和 int,这时候我们可以使用一个叫做Convert的转换工厂进行转换。
注意:使用Convert进行转换,也要满足一个条件:
面子上要过的去,比如:
string a = "123"// 可以转成 int 或 double
string b = "123abc"//不可以转成 int 或 double
2.算数运算符
++:分为前++和后++,不管是前++还是后++,最终的结果都是给这个变量加一。
去别表现在表达式当中,如果是前++,则先给这个变量自身加一,然后带着这个加一后的值去参与运算。
如果是后++,则先拿原值参与运算,运算完成后,再将这个变量自身加一。
--:同上。
3.
对于像++或--这样只需要一个操作数就能完成的运算,我们称之为一元运算符。
+ - * / %对于这些需要两个或以上才能完成运算的操作符,我们称之为二元运算符。
一元运算符的优先级要高于二元运算符。
如果在一个表达式当中,既有一元运算符,又有二元运算符,我们首先计算一元运算符。
4.关系运算符
>
<
>=
<=
==
!=
关系运算符是用来描述两个事物之间的关系
由关系运算符连接的表达式称之为关系表达式。
5.bool类型
在c#中我们用bool类型来描述对或者错。
bool类型的值只有两个 一个true 一个false
6.逻辑运算符
&&逻辑与
||逻辑或
!逻辑非
逻辑运算符两边放的一般都是关系表达式或者bool类型的值
5>3&&true
3>5||false
!表达式
逻辑表达式的结果同样也是bool类型
7.复合赋值运算符
+=
-=
*=
/=
%=
8.顺序结构:程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行。
分支结构:if if-else
选择结构:if else-if switch-case
循环结构:while do-while for foreach
9.if语句:
语法:
if(判断条件)
{
要执行的代码;
}
判断条件:一般为关系表达式或者bool类型的值。
执行过程:程序运行到if处,首先判断if所带的小括号中的判断条件,
如果条件成立,也就是返回true,则执行if收带的大括号中的代码,
如果判断条件不成立,也就是返回一个false,则跳过if结构,继续向下执行。
if结构的特点,先判断,再执行,有可能一行代码都不执行用于一种情况的判断
如果你想表示的含义是当b的值为true的时候去执行if中的代码,
那么语法上==true可以省略
但是,如果你想表达的是当b==false的时候去执行if中的代码,
那么语法上==false不能省略
10.if-else
语法:
if(判断条件)
{
执行的代码;
}
else
{
执行的代码;
}
执行过程:程序执行到if处,首先判断if所带的小括号中的判断条件是否成立,如果成立,也就是返回一个true,则执行if所带的大括号中的代码,执行完成后,跳出if结构。
如果if所带的小括号中的判断条件不成立,也就是返回一个false,则跳过if语句,执行else所带的大括号中的语句,执行完成后,跳出if-else结构。
if-else结构的特点:先判断,再执行,最少都要执行一条代码。
用于两种情况的判断
10.if else-if
作用:用来处理多条件的区间性的判断。
语法:
if(判断条件)
{
要执行的代码;
}
else if(判断条件)
{
要执行的代码;
}
else if(判断条件)
{
要执行的代码;
}
else if(判断条件)
{
要执行的代码;
}
......
else
{
要执行的代码;
}
执行过程:程序首先判断第一个if所带的小括号中的判断条件,如果条件成立,也就是返回一个true,则执行该if所带的大括号中的代码,执行完成后,立即跳出if else-if结构。
如果第一个if所带的判断条件不成立,也就是返回一个false,则继续向下进行判断,依次的判断每一个if的判断条件,如果成立,就执行该if所带的大括号中的代码,如果不成立,则继续行侠判断,如果每个if所带的判断条件都不成立,就看当前这个if else-if结构中是否存在else。
如果有else的话,则执行else中所带的代码,如果没有else,则整个
if else-if结构什么都不做。
else可以省略。
七、
1、异常捕获
我们在程序中经常会出现在各种各样的异常,你如果想要你的程序变得坚强
一些,在你的代码中应该经常性的使用try-catch来进行异常捕获。
哪行代码有可能出现异常,你就踹它一脚。
语法:
try
{
可能会出现异常的代码;
......
....
...
}
//try和catch之间不能有其它的代码
catch
{
出现异常后要执行的代码;
}
执行过程:如果try中的代码没有出现异常,那么catch中的代码不会执行。
如果try中的代码出现了异常,哪怕这行出现异常的代码后面还有一百行甚至
更多,都不会执行了,而是直接跳到catch中执行代码
2、变量的作用域
变量的作用域就是你能够使用到这个变量的范围。
变量的作用域一般从声明它的那个括号开始到那个括号所对应的括号结束。
在这个范围内,我们可以访问并使用变量,超出这个范围就访问不到了
3、switch-case
用来处理多条件的定值判断。
语法:
switch(变量或者表达式的值)
{
case 值1;要执行的代码;
break;
case 值2;要执行的代码;
break;
case 值3;要执行的代码;
break;
......
default:要执行的代码;
break;
}
执行过程:程序执行到switch处,首先将括号中变量或者表达式的值计算来,
然后拿着这个值依次跟每个case后面的值进行匹配,一旦匹配成功,则执行该case所带的代码,执行完成后,遇到break,跳出switch-case结构。
如果跟每个case所带的值都不匹配,就看当前这个switch-case结构中是否存在default,如果有default,则执行default中的语句,如果没有default,则switch-case结构什么都不做。
4、循环结构
while循环:
while(循环条件)
{
循环体;
}
执行过程:程序首先运行到while处,首先判断while所带的小括号内的循环条
件是否成立,如果成立的话,也就是返回一个true,则执行循环体,执行完一遍循环体后,再次回到循环条件进行判断,如果依然陈丽,则继续执行循环体
如果不成立,则跳出while循环。
在while循环当中,一般总有那么一行代码,能够改变循环条件,使之终有一
天不再成立,如果没有那么一行代码能够改变循环条件,也就是循环条件永远都成立,我们称这种循环叫做死循环。
最简单最仓用的死循环:
while(true)
{
循环体;
}
特点:先判断,再执行,有可能一遍循环都不执行。
5、break
1)、可以跳出switch-case结构。
2)、可以跳出当前循环。
break一般不单独使用,而是跟着if判断一起使用,表示,当满足某些条件的
时候,就不再循环了。
6、do-while循环
语法:
do
{
循环体;
}while(循环条件);
执行过程:程序首先会执行do中的循环体,执行完成后,去判断do-while循环的循环条件,如果成立,则继续执行do中的循环体,如果不成立,则跳出do-while循环。
特点:先循环,在判断,最少执行一遍循环体。
八、
1)、程序调试
1)、写完一段程序后,想看一下这段程序的执行过程
2)、当你写完这段程序后,发现程序并没有按照你想象的样子去执行
调试方法:
1)、F11逐语句调试(单步调试)
2)、F10逐过程调试
3)、断点调试
2、for循环
语法:
for(表达式1;表达式2;表达式3;)
{
循环体;
}
表达式1一般为声明循环变量,记录循环的次数(int i=0;)
表达式2一般为循环条件(i<10)
表达式3一般为改变循环条件的代码,使循环条件终有一天不在成立(i++)
执行过程:程序首先执行表达式1,声明了一个循环变量用来记录循环的数,然后执行表达式2,判断循环条件是否成立,如果表达式2返回的结果为true,则执行循环体,如果不成立,则跳出for循环。
4、三元表达式
语法:
表达式1?表达式2:表达式3;
表达式1一般为一个关系表达式。
如果表达式1的值为true,那么表达式2的值就是整个三元表达式的值。
如果表达式1的值为false,那么表达式3的值就是整个三元表达式的值。
注意:表达式2的结果必须跟表达式3的结果类型一致,并且也要跟整个三元表达式的结果类型一致。
九、
1、常量
声明常量的语法:
const 变量类型 变量名=值;
6、枚举
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
......
}
public:访问修饰符,公开的公共的,哪儿都可以访问。
enum:关键字,声明枚举的关键字
枚举名:要符合Pascal命名规范
将枚举声明到命名空间下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举
枚举就是一个变量类型,只是枚举声明、赋值、使用的方式跟那些普通的变量类型不一样
7、所有的类型都能转换成string类型,调用ToString()
8、结构
可以帮助我们一次性声明多个不同类型德变量。
语法:
[public] struct 结构名
{
成员;//字段
}
变量在程序运行期间只能存储一个值,而字段可以存储多个值。
9、数组
一次性存储多个相同类型的变量。
语法:
数组类型[] 数组名=new 数组类型[数组长度];
10、冒泡排序:就是将一个数组中的元素按照从大到小或者从小到大的顺序进行排列。
11、方法
函数就是将一堆代码进行重用的一种机制。
函数的语法:
[public] static 返回值类型 方法名([参数列表])
{
方法体;
}
public:访问修饰符,公开的,公共的,哪儿都可以访问。
static:静态的
返回值类型:如果不需要返回值,写void
方法名:pascal 每个单词的首字母都大写,其余字母小写
参数列表:完成这个方法所必须要提供给这个方法的条件,如果没有参数,小括号也不能省略。
方法写好后,如果想要被执行,必须要在Main()函数中调用。
方法的调用语法:
类名.方法名();
12、return
1.在方法中返回要返回的值。
2.立即结束本次方法。
十、
1、我们在Main()函数中,调用Test()函数,我们管Main()函数称之为调用者,
管Test()函数称之为被调用者。
如果被调用者想要得到调用者的值:
1.传递参数。
2.使用静态字段来模拟全局变量。
1.返回值
2、不管是形参还是实参,都是在内存中开辟了空间的。
3、方法的功能一定要单一。
方法中最忌讳的就是出现让用户输入等字眼
4、out、ref、params
1.out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
2.ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
3.params可变参数
将实参列表中跟可变参数类型一致的元素都当作数组的元素去处理。
params可变参数必须是形参列表中的最后一个元素。
5、方法的重载
概念:方法的重载指的就是方法的名称相同,但是参数不同。
1.如果参数的个数相同,那么参数的类型就不能相同。
2.如果参数的类型相同,那么参数的个数就不能形同。
*方法的重载跟返回值没有关系。
6、方法的递归
方法自己调用自己。
找出一个文件夹中所有的文件。
十一、面向对象
1、面向过程------>面向对象
面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作
1.打开冰箱门
2.把大象塞进冰箱
3.关闭冰箱门
如果我们用面向过程的思想来解决这件事儿,当执行这件事的人不同的时候,我们需要为每一个不同的人量身定做解决事情的方法
面向对象:找个对象帮你做事
把大象塞进冰箱里
1.冰箱门可以被打开
2.大象可以被塞进冰箱里
3.冰箱门可以被关闭
面向对象意在写出一个通用的代码,屏蔽差异
关门
面向过程:关门
张三:一脚把门踹紧了
李四:轻轻的把门带上了
王五:门没关严,留了个尾巴
面向对象:关门
门可以被关闭
姓名:孙全
特征:
性别:男
身高:180cm
体重:70kg
年龄:22岁
行为:
吃喝拉撒睡一切正常 健康
吃喝嫖赌抽
特征:
姓名:颜德伟
性别:男
身高:160cm
体重:60kg
年龄:18
行为:
脑残 身体健康
我们在代码中描述一个对象,通过描述这个对象的属性和方法
对象必须是看的见摸得着的
灯:属性和方法
属性:
外形:圆的
功耗:500w
颜色:白色
牌子:xx
方法:发光
电风扇:属性、方法
外形:三个叶片
颜色:白色
品牌:xx
方法:转动、扇风
我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来“类”这个概念
类是一张图纸,确定了对象具有的属性和方法
对象是根据类创建出来的
类就是一个盖大楼的图纸,对象就是盖出来的大楼