class="p0" style="text-align: center;">.Net开发环境
VS开发环境介绍
解决方案管理器:解决方案、工程、文件。
拖动视图、关闭/打开视图、重置窗口布局。
C#程序的入口是Main函数。
错误列表。见到编译错误不用慌。错误排除演示。常见错误:结尾没有分号,大小写错误。
显示代码行号。工具→选项→文本编辑器→C#→显示→行号。
修改文本编辑器字体:工具→选项→环境→字体和颜色。
设置启动项目:在解决方案上点击右键→属性→启动项目,“当前选定内容”是把当前编辑器所在的项目为启动项目,但启动项目就是右键设定启动项目设置的,多启动项目可以让多个项目同时启动,适合于开发客户端、服务器的程序。
注释:单行注释、多行注释。批量注释、反注释。用VisualStudio的批量反注释:快捷键、工具栏图标两种方式。
C#语法
大小写敏感。String和string 都行是另外一个问题。
函数参数用()包围。错误:string s2 = Console.ReadLine; Console.WriteLine=3,区分方法和属性,看图标颜色。
两句代码之间用分号(;)分割(易错:全角问题)
变量
把变量看成放数据的容器。
定义变量的方式:类型 变量名; int i3;变量只是容器,必须放进去值才有意义,否则就是一个“杯具”。
string s1=null和string s1不一样。
变量的类型:不同类型的容器放不同的东西。不能在int类型的变量中放字符串。
变量不能放和变量类型不兼容的数据。
变量的名字不能重名(不严格)
//int i3 = 33;//定义一个变量i3,赋值为33
i3 = 33;//为已有变量i3赋值为33
变量只能声明一次,但是可以多次使用。
int i1=5;int i1=6;不可以。但是int i1=5;i1=6;是 可以的。
问题
int i=10;Console.WriteLine("i"); Console.WriteLine(i);
前者输出类型为字符串,后者输出类型为整型。
常用基本数据类型
string、int 、char 、bool long等。
bool的取值:true、false。int的表示范围。long有多long
转义符:"\n"回车。
"\""中\是告诉编译器不要把这个"当成字符串的结束。
@的作用:①是不把\当成转义符。②定义多行文本。
@的局限:不能解决字符串中有双引号的问题,如果有双引号还是用转义符
简单的类型转换:Convert.ToString()、ToString()、Convert.ToInt32() 。即可用中间变量,也可以不用。int i = Convert.ToInt32(Console.ReadLine());
变量的命名规则
命名规则:第一个字符必须是字母或者下划线(_),其后的字符可以是任意个数字、字母、下划线。不能全部使用C#的关键字,比如class、namespace、new、void等。判断方式:VS中亮蓝色的就是关键字。
这也是类、函数等的命名规则。还可以使用中文变量名(类名、函数名),不推荐。
推荐:类方法首字母大写,变量首字母小写。
变量使用过程:声明→赋值→使用。
运算符、表达式
+、-、*(乘)、/(除)、%(求余)
+可以用作字符串连接,其他不可以。
++(自增)、--(自减)
C#优先级
赋值
赋值运算符=,让左边变量的值等于右边的计算结果。这就能解释令人不解的i=i+1;
(*)+=、-=、*=、/=。
i2=i1++;i2=++i1;(了解)。--同理。
区别:前者为先赋值后自增,后者为先自增后赋值。
习题:int a=10;a++;a=a+a;Console.WriteLine("{0}",a);执行结果是什么? 22
int i=10;int j=i;i=5;j=?10
int x=10;x+y=80;Console.WriteLine(y); x + y = 80; //左边的必须是变量!!!不能是常量,不能是表达式
习题(重点,难点):交换两个变量的值。易错!!!
temp=i;i=j;j=temp;
布尔运算
相等判断:==,不要和=混淆。WriteLine("{0}",i==1);WriteLine("{0}",i=1);的区别。Console.WriteLine("{0}",i=1);//C#中赋值表达式也有值,它的值表示为赋值后变量的值
不等判断:!=
大小比较:<、>、<=、>=
取反:!
组合运算:&&(与)、||(或)。
&& 并且:只有两边都为true的时候,表达式的值才为true,否则是false;
||或者:两边只要有一个为true的时候,表达式的值就是true,否则是false;
&&、||是短路运算,试验。
if
if-else
if-else if-....else
建议:不管是不是一句话,都加大括号。
switch case
被判定的值进入满足条件的分支执行
case中的值必须是常量,不能是变量、表达式。
类似于if...else...else if...else,但是是离散值的判断。
switch一般都可以用if重写,但是if不一定能用switch重写
不要忘了break。C#中的break不写是不行的,除了合并case的情况
while循环
while与do while 区别
前者先判断后执行,后者先执行,后判断。
循环的中断
break:立即终止整个循环。
continue:立即终止当前循环步骤,进行下一次循环步骤。
return:终止当前方法。
for循环
for(code1;code2;code3)。code1:循环的初始化代码,只在循环开始之前运行一次;code2,bool类型的表达式,每次循环完成前都判断一下是否为true,只有为true才会进行本次循环;code3在每次循环之后执行一次。
for的三段都可以省略,但是不能丢了“;”。
break、continue同样可以应用于for。
for和while代码之间都可以互相转换,究竟用哪种方式则取决于一些惯用用法和个人习惯。
for中终止条件注意是<还是<=。只要想好了想要的最后一个数是什么、第一个数是什么即可
声明 enum 名字{}值用逗号分隔。
可以给值赋值(int型),如果不赋值,则默认从0开始(或者前一个赋值的加一)
确定数量、确定值的几个取值:东西南北、男女、上中下。
enum Gender{male,female}
enum QQStatus{online,offline,hidden}
枚举的用法,QQStatus status = QQStatus.online;
取值:Console.Write(status) 取得的是前面的。
也可以Console.Write((int))status 取得的是对应的int值。
和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便。
数组
保存多个值。几乎任意类型都可以声明数组。
int[] nums = new int[3]
int[] nums = {5,3,8}
int[] nums = new int[3]{5,3,8}//个数和声明数必须一致
int[] nums = new int[5]{5,3,8}//错误
使用索引器访问指定编号位置的元素,访问数组元素:nums[0]、nums[1]。索引从0开始。取到的元素的类型就是数组元素的类型。还可以对数组元素进行赋值