目录
1. .NET .NET Framework是一种多语言的平台,一种技术. 而c#是基于其上面的一种语言。 1
2. Winform 桌面应用程序[从.net平台上面开发的] 1
4. Visual Studio 也叫Visual Studio.net 简称<VS> 4
11: 重置开发环境【工具---导入与导出----重置所有】 6
12. 代码写完之后,先生成(F6)【不用启动程序,只查找出所写程序的错误之处。】,后运行(F5)。 6
16. 公共语言运行时(CLR) - 能够理解MSIL; 7
18:可以从文件中新建项目,也可以从解决方案中新建项目. 9
19:项目启动项的设定【解决方案,】->属性->选择当前为启动项】 9
33. 练习:问用户喜欢吃什么水果,假如用户输入"苹果",则显示"哈哈,这么巧呀,我也喜欢苹果" 14
36. 1. 定义两个数分别是10和20,打印出两个数的和! 15
44.能够改变变量中的值为[=],[++/--]三种; 18
45.任何一个关系表达式运算的结果是个bool类型{是真还是假} 18
47. 让用户输入张三的语文和数学成绩,输出一下判断是否正确,正确为True,错误为False 19
49. 让用户输入年龄,如果输入的年龄大于18岁,则给用户显示你已成年 20
50. 注意:字符串不能简单的转化成int类型!也就是说:不能用显性转换字符串! 20
53. 盖茨买了一筐鸡蛋,如果坏蛋少于5个,他就吃掉,否则他就去退货! 21
55. 自动排版快捷键: 全选+Ctrl + k + f. 24
56. 练习:提示用户输入密码,如果密码是"888888"则提示正确, 24
61. 输入班级人数,然后依次输入学员成绩,计算班级学员 26
63. 明天小兰就要登台了,老师说再把明天的舞蹈跳一遍, 27
69.循环输入5个人的年龄,,求出5个人的平均年龄,当输入的年龄<0,或者>100则立即终止程序 29
86. 如果一个方法中一旦有参数,呢么调用者就要传参数,并且传参数的个数与位置上的类型必须一致! 36
89. 注意:在方法中尽量不要提示用户,因为这样做,你的方法适用范围就变低了! 37
1. .NET .NET Framework是一种多语言的平台,一种技术. 而c#是基于其上面的一种语言。
C# 是一种高级编程语言
2. Winform 桌面应用程序[从.net平台上面开发的]
ASP.NET Internet应用程序
3.两种架构:
C/S 客户机(Client)/服务器模式(Server)连接服务器的一种通讯!
B/S 浏览器(Browser)/服务器模式(Server)也叫做网站!
桌面应用程序 ---C/S
web应用程序 --- B/S
4. Visual Studio 也叫Visual Studio.net 简称<VS>
IDE【集成开发环境】 (Integratesd Development)这就是我们熟知的Visual Studio.net
5. 解决方案可以有多个项目,
一个项目可以有多个文件,
一个文件中可以有命名空间,
一个命名空间可以有多个类,
一个类中可以有多个方法,
6. 快捷键: Ctrl +shift +n 新建项目
ctrl + f 查询
F5 启动调试
F6 生成解决方案
F10 逐过程
F11 逐语句
ctrl + home 到文档的最前面!
ctrl + end 到文档的最后面!
7. 基本架构: 引用命名空间
:
:
定义一个命名空间
{
类
{
方法!
}
}
例如:namepace 项目名------【命名空间】
{
class Program-----【类】
{
static void Main(string[] args)------【方法】
{
}
}
}
8. 类文件是以.cs结尾的!
项目是以.csproj结尾的!
解决方案是以.sln结尾的!
Main方法是程序的入口方法!
9. 注意在编辑的时候一定要及时保存!
10. 学习两句话:
Console.WriteLine("hello world!"); -----光标换行
//基本的输出函数!
Console.ReadKey();------输出光标不换行
//任意按一个键退出程序!
11: 重置开发环境【工具---导入与导出----重置所有】
12. 代码写完之后,先生成(F6)【不用启动程序,只查找出所写程序的错误之处。】,后运行(F5)。
13.bin文件夹中的Debug中存放生成的程序文件;
14. 单行注释: //
块注释 : /**/
文挡注释: /// 对类和方法进行注释
15. 叠折一段代码
#region
代码!
#endregion
16. 公共语言运行时(CLR) - 能够理解MSIL;
MSIL微软中间语言
.NET Framework 类库 (FCL)
.net 在电脑上的运行顺序:
应用程序
|
.NET Framework
|
CLR
|
电脑
17. .NET Framework
.NET Framework 类库
ASP.NET Winforms
|
ADO.NET【访问数据库】 和 XML
|
基本框架
|
CLR -> CLS CTS JIT
【解释执行语言】 | | |
公共语言规范 | |
通用类型系统 |
即时编译器
18:可以从文件中新建项目,也可以从解决方案中新建项目.
19:项目启动项的设定【解决方案,】->属性->选择当前为启动项】
20:【卸载项目】在项目上右击-》卸载当前项目
【重载项目】在项目上右击-》重载当前项目
21. 数据类型:
int [整形]*10位以下!
uint
long
ulong
byte
sbyte
short
ushort
double [精确度在15~16位]
decimal [金钱]【28~29位】
非数字类型:
object
char
string
bool
22. 【RAM】:称为内存,断电后存储的东西丢失;
一般说的存在内存中,指的是我们电脑上的硬盘;
23. 注意:char类型不能为空
例如:char ‘‘; 错误的
char ‘ ‘;正确的
24. decimal 定义变量
例如:
decimal monney=1524.12m/M;
double sum = 45.8 后面可以加F/f/不加!
当加上f/F时,就成为45.7999992370605;
而不加的还是:45.8;
25. 变量命名规则:
1. 必须以"字母" _或@符号开头!
2. 后面可以一跟"字母"、"数字"、"下划线"
注意:
1. 变量名不能与关键字相同
2. 在C#中区分大小写
3. 同一变量名不能重复定义;
4. 一般以Camel命名法来命名变量!
而方法名一般用Pascal命名法 每个单词的首字母都大写;
关键字:
Camel 命名法:
第一个单词的首字母要小写,其他的要大写!
Pascal 命名法:
每个单词的首字母都要大写
注意: 如果使用英文单词的缩写,都使用大写!
26."+"法运算符的使用:
作用:1. 数学中的加法运算符!
2. 有连接的意思!
例如;
int age ;
string name;
Console.WriteLine("你好"+name +"你的年龄是"+age);
27. 练习题:
1. 定义3个变量,分别储存一个人的姓名(张三),年龄(28)和工资(7600.3),然后在屏幕上显示,我叫XX,今年X岁了,我的工资是XX元!
2.定义一个变量存储一个人的年龄(18),要把这个人的年龄修改为20岁,最后把这个年龄输出!
28. 占位符:
1. 数字从零开始,可以越过数字a,直接输入数字b。
2. 占位符<=变量的的个数!
29.两种错误形式:
1. 语法错误
2. 运行时错误
30. 电话一般使用string类型
同一字符串不能使用折行!
31. 两个数字交换
t=a;
a=b;
b=t;
32. 输入语句:
Console.ReadLine();
注意:用户输入的都是字符串!,因此接受用户输入的都定义为字符串!
33. 练习:问用户喜欢吃什么水果,假如用户输入"苹果",则显示"哈哈,这么巧呀,我也喜欢苹果"
练习:请用户输入姓名,然后在屏幕上显示"你好XXX";
34. 常见的转义字符:
\‘ 单引号
\\ 反斜杠
\n 换行
\r 回车
\v 垂直制表符
\" 双引号
\0 空字符
\b 退格
\t 水平制表符
\f 换页
在字符串前面加一个@符号有两种意义
1. 字符串中如果有\,则不再理解为转义字符
2. 使字符串的可以换行。
这个时候,要是想加入"",则一对双引号表示一个双引号!
35. int a=1,b=2,c=4;
int arge;
arge=(a+b+c)/3;
Console.WriteLine(arge);
36. 1. 定义两个数分别是10和20,打印出两个数的和!
2. 计算半径为5的圆的面积并打印出来!
某体恤的价格为35元/件,裤子的价格为120元/条,小明在该店买3件T恤和2条裤子,倾计算并现实小明应该付多少钱?
3. 假如商店为小明打8.8折,那么小明应该付多少钱呢?
37. 两种类型兼容
int 和double 兼容
目标类型大于源类型
double>int;
38. 类型转换:
强制类型转换:
转换格式:
(数据类型名)待转换的值
即在元素的前面添加上"(int)/(double)/(decimal)"
数据类型的转换
(类型)变量名=Convert.Toint32(转换类型)
int s=Convert.ToInt32(待转换的字符串)
另一种转换:
变量名.ToString()。只能将数据类型转化成为字符串类型!
小结:
-
隐式类型转换:常用于数值型之间,将范围小的数值类型转换为范围大的数值类型
-
显式类型转换:常用于数值型之间,将范围大的数值类型转换为范围小的数值类型,使用小括号运算!
-
Parse()方法:将字符串转化成其他字符类型!
-
Convert类:任何基本类型之间的相互转化!
-
int.Parse(string) 将一个字符串转换成int类型!
每一个类型都有.parse方法!
39 练习
让学生输入其姓名和语文\数学\英语,编程求总分和平均分。
并在屏幕上显示:XX你的总分为XX分,平均分为XX分
编辑实现计算几天(如46天)是几周零几天。
编辑实现107653秒是几天几小时几分钟几秒
40:出错代码捕获机制
Try
{ 【1】需要验证的出错代码 }
Catch
{ 【2】出错后的处理 }
若执行程序,执行了【1】代码,则【1】中代码正确,若执行了代码【2】则【1】中的代码出错;
41. a=a+1和a++比较:
a++要比a=a+1的运算效率高!
42. ++a;前自增就是先自增,后使用!
a++;后自增就是先使用,后自增!
43. 一元运算符优先级>二元运算符的优先级!
44.能够改变变量中的值为[=],[++/--]三种;
45.任何一个关系表达式运算的结果是个bool类型{是真还是假}
数据类型【bool】
结果
{
.true
.flase
}
46. 关系运算符>逻辑表达式
逻辑表达式:
&& || !
关系表达式:
-
< > = != <= ==
47. 让用户输入张三的语文和数学成绩,输出一下判断是否正确,正确为True,错误为False
1. 张三的语文和数学成绩都大于90分
2.语文和数学有一门是90分的!
3.判断闰年;
闰年的条件:1.能被400整除,
2.能够被4整除,但不能被100整除;
48. if 结构:
顺序结构
分支结构(判断结构)
if(条件)
{
语句1;
}
else
{
语句2;
}
49. 让用户输入年龄,如果输入的年龄大于18岁,则给用户显示你已成年
如果张三的语文成绩大于90并音乐成绩大于80,或者语文成绩等于100并音乐成绩大于70,则奖励100元
让用户输入用户名和密码,如果用户名为admin,密码为mypass,则提示登录成功!
50. 注意:字符串不能简单的转化成int类型!也就是说:不能用显性转换字符串!
51:Switch-case语句
语法:【遇到break,直接跳出switch语句】
switch(表达式)
{
case 值1:语句快1;berak;
case 值2:语句快2;break;
default :语句快3;break;
}【执行过程,首先判断表达式,然后在根据case进行判断,选择那个case,若没有则执行default语句;】
注意:break不能省略!
52:if-else-if与switch的比较
相同点:都可以实现多分枝语句;
不同点:switch一般只能用于等值比较;if-else-if可以处理范围;
53. 盖茨买了一筐鸡蛋,如果坏蛋少于5个,他就吃掉,否则他就去退货!
要求用户输入两个数字a,b,如果a能被b整除或者a加b大于100,则输出a的值,否则输出b的值!
对学员的结业考试成绩评测(考虑用if好还是用if-else好)
成绩>=90:A
90 >成绩>=80:B
80 >成绩>=70:C
70 >成绩>=60:D
成绩<60:E;
54.bool能转化成数值类型
using System.Text;
using System.Threading.Tasks;
namespace bool类型能否转换成数值类型
{
class Program
{
static void Main(string[] args)
{
bool bin=false;
int min=Convert.ToInt32(bin);
Console.WriteLine(min);
Console.ReadKey();
}
}
}结果是:0;
55. 自动排版快捷键: 全选+Ctrl + k + f.
56. 练习:提示用户输入密码,如果密码是"888888"则提示正确,
否则要求在输入一次,如果密码是"888888"则提示正确,否则提示
错误!
提示用户输入用户名,然后在提示输入密码,如果用户名
是"admin"并且密码是"888888",则提示正确,否则,如果
用户名不是"admin"则提示用户名不存在,如果用户名是
admin,则提示密码错误!
提示用户输入年龄,如果大于等于,则告知用户可以查看,如果小于岁,则告知不允许查看,如果大于等于10,则提示用户是否
继续查看(yes、no),如果输入的是yes,则提示用户请查看,
否则提示"退出,你放弃查看";
57.调试:
逐过程:F10;
逐语句; F11;
在调试程序的时候,如果用到调用函数,则必须逐语句(F11),不能再用逐过程(F10),因为进不去!
58. 习题:
李四的年终工作评定,如果定为A级,则工资涨500元
,如果定为B级,则工资涨200元,如果定为C级,工资不变,如果
定为D级工资降200元,如果定为E级,工资降500元!
设李四的原工资为5000,请用户输入李四的评级,然后显示李斯的工资!
59. 放置标志
也就是定义一个bool类型!
60.while语法:
while(条件)
{
语句!;
}
61. 输入班级人数,然后依次输入学员成绩,计算班级学员
的平均成绩和总成绩
老师问学生,这道题会做吗?如果学生回答会了,则可以
放学了!如果学生不会做(n),则老师在讲一遍,再问
学生是否会做了.....
直到学生会了为止,才放学!
直到学生会或老师给他讲了10遍,还是不会都要放学!
2006年培养学员8万人,每年增长25%,请问按此增长
速度,到哪一年培训学员人数达到20万人?
62. do
{
循环体;
}while(循环条件);
63. 明天小兰就要登台了,老师说再把明天的舞蹈跳一遍,
如果填的不好,则重跳一遍!
64. 用while计算1到100之间证书的和;
要求用户输入用户名和密码,只要不是:admin、88888
就一直提示用户名或密码错误,请重新输入。
不断的要求用户输入学生姓名,输入q结束!
不断要求用户输入一个数字,然后打印这个数字的二倍!
当有用户输入q的时候,程序退出!
不断要求用户输入一个数字,(假定用户输入的是整数),当用户输入end的时候,显示刚才输入的数字中最大的值
张三先唱一遍表演的歌曲,老师觉得张三歌曲不过关,就
让张三在唱一遍,老师满意则张三可以下课,不然则需要再唱一遍,再问老师是否满意。。。
65. 调试:
设置断点
单步运行
观察变量
注意:
可以对变量进行监视!
66. for(1;2;3)
{
循环体;
}
当i定义在for循环中,则i只能内部调用!
67. 习题:
1. 求1-100间的所有偶数和?
2. 找出100-999间的水仙花束!
3. 输出九九乘法表(循环嵌套)
水仙花数:是一个三数,例如:abc=a*a*a+b*b*b+c*c*c;
习题:
请输入一个值:
根据这个值可以输出一下加法表:
0 + 6 = 6
1 + 5 = 6
2 + 4 = 6
3 + 3 = 6
4 + 2 = 6
6 + 0 = 6
68. break用于循环中,退出当前循环。
continue 进行下一次循环!
69.循环输入5个人的年龄,,求出5个人的平均年龄,当输入的年龄<0,或者>100则立即终止程序
在while-break,让用户一直输入用户名和密码,当密码户用户名分别是:admin;888888;时,则提示登录成功!
1-100之间的整数相加,得到累加值大于20的当前数!
1-100之间不能被7整除的所有数的和!
70. 三元表达式:
表1?表2:表3;
注意:表达式2和表达式3必须兼容!
71. 跳转语句:
break; continue; goto(不建议使用,因为破坏了程序的结构!);
72. const 类型 变量 = 值;
例如: const double PI=3.14;
常量不能定义为静态量;也就是说const前面没有static
对于一般的变量来说,静态方法只能调用静态变量,而静态的变量可以被任意范围内的方法调用
好处:可以使我们修改数值时变得简单;
73. 枚举:
自己可以重新定了一种类型,并且在定义了这种类型时我们可以指定其中的所有的值;
语法:
enum 自己起的类型名称{值1,值2,值3。。。}
注意:1.定义枚举的时候,一般和类是一个级别!{类中也可以,但定义的这 个类型,只能在这个类中使用!}
2.在定义枚举类型是不需要""。
枚举的作用:
*限制用户不能随意赋值,只能在定义枚举时列举的之中选择
*不需死记每一个值是什么,只需要选择相应的值;;
枚举的使用:
枚举类型 变量;
变量 = 枚举类型.值;
将字符串转换成枚举类型!
例如:
变量 = (枚举类型)(Enum.Parse(typeof(枚举类型),用户输入的字符串))
注意:
这里之所以要强制类型转换是因为,用户输入的是字符串类型,而字符串中的"男"和枚举类型中的"男"是不一样的!
枚举类型的变量都可以强制转换成int类型的!
定义枚举时,值不能是int 类型;
枚举值的定义有一个默认的编号,从0开始;
74. 窗体应用:
MessageBox.Show("中间显示的文本","导航标题","定义按钮","提示图标")
注意: 当你使用的是枚举的时候,直接按回车键,就可以看到它里面包含的东西!
75.结构体:
语法:
访问修饰符 struct 结构名【也是一种类型】
{
访问修饰符 类型 变量;
}
结构中可以访问方法!而在C/C++里面是不允许的!
结构体和类是同一级别!
方法内部不允许public的出现!
public 是访问修饰符中最高的一个!即决定访问级别!
结构体-定义变量:
结构名 变量;
变量.成员名 = 值;
76练习;
1.定义一个结构为MyColor,有三个成员,分别是red,green,blue
声明一个MyColor类型的变量,并对其成员赋值,使MyColor
可以表示一个红色。
2.定义一个结构类型Person,有三个成员,分别是性别,年龄,姓名
声明两个Person类型的变量名分别标示张三 男 18岁/小兰 女 15岁
77. 1kb=1024B;
1MB=1024kb;
1GB=1024MB;
1TB=1024GB; 4:Bps 传输速度 bit per second
78. 习题:
1. 一次语文测试后,老师让班长统计每个人的语文成绩,输入全班的全部成绩,然后输出!
79. 数组语法:
数据类型[] 数组名 = new 数组类型[数据长度]
数据类型[] 数组名 = { 值1,值2,值3}
数据类型[] 数组名 = new 数组类型[数据长度]{值1,值2,值3}
例如;
int[] a=new int[5];//通俗点说里面包含了5个类的变量
int[] a=new int[5]{1,2,2,4,5};
方括号里面有多少个数字,大括号里面必须有多少个!否则就错误了!但是大括号里面如果没有数的话,是不会出现错误的!
例如; int[] a=new int[5]{1,2,3,5} 这句话是错误的!
int[] a={1,2,3,4,5};
int类型的数组一旦声明,里面的元素就全被初始化为0
我们可以通过: 数字名.length来访问数组的长度!
80. 我们经常说的下标就是所谓的【索引】
81. 清屏:
Console.Clear();
82. 函数(方法)是将一堆代码进行重用的一种机制!
方法一般定义在类中!、
方法名适运用pascal命名法!
静态方法 --------static
83. 无
84. 方法的定义:
语法;
【访问修饰符】 【static】 返回值类型 方法名(形参)
{
方法体;
}
调用方法的时候一般是:类名.方法名;
例如;Console.WriteLine("hello world!");
所以我们一般调用静态方法的时候,本应该是这样调用!但是在类中调用本类的方法,可以只写方法名();
85. return立即退出本方法!
Reflector是一个查看代码的软件!
86. 如果一个方法中一旦有参数,呢么调用者就要传参数,并且传参数的个数与位置上的类型必须一致!
87. 写一个方法,判断年份是否是闰年!
88.变量的作用域【变量的生命周期】
*在方法中定义的变量全为局部变量,从定义开始到其所对应的大括号结束;
*在整个类中定义的变量称为全局变量!
89. 注意:在方法中尽量不要提示用户,因为这样做,你的方法适用范围就变低了!
90.方法的重载:
方法重载和返回值类型没有关系!只与参数的类型有关!
参数的个数的不同也可以构成重载!
注意:任何类型都可以转到object类型;
91. out 参数和ref参数返值
注意:用out修饰的变量必须在此方法内进行赋值!
而ref不需要将对变量进行赋值!
在传值的时候,必须要将传给的那个变量的前面加上out;
int.TryParse(string , out 转换后的数字变量);
TryParse()方法返回值是bool