.Net系列学习课程—01C#

来源:互联网 发布:node v4.4.7 x64.msi 编辑:程序博客网 时间:2024/04/29 04:09
.Net系列学习课程—第一部分:C#基础

好的学习习惯
错误使用习惯,一段文字的删除、复制粘贴、自动完成。插入、覆盖模式的困惑。
技巧:消息框文本的复制:Ctrl+Z
函数名字大小写切换要用Shift,别用cap
;,()等的全角半角问题。
VisualStudio多项目的创建,项目的重新打开,只要有一个项目有问题默认就无法运行,项目的卸载,自动运行当前项目。如果代码运行有问题,看看运行的项目对不对。
VisualStudio各个视图的打开、开发环境的重置。
遇到异常、报错不要慌。

一些常用的操作
保存位置,以及如何打开项目的文件夹。(项目上点击右键,选择在资源管理器中打开.)
如何将项目文件夹中的其它文件加载到项目中。
项目文件夹中扩展名为csproj的文件,包含当前项目中包含的文件。
如何显示行号:工具|选项|文本编辑器|CS|显示行号。
Ctrl+G,快速定位到指定行号。


.Net开发环境(*了解)



第一个C#程序

  • 创建第一个控制台程序并且调试运行。
  • 为什么要从控制台程序开始?不要把精力放到表现层,而是把精力放到写代码上。无论控制台还是Winform还是ASP.Net最难的是写代码,而不是拖控件。
  • 唯一需要学的三条控制台指令:Console.WriteLine:打印输出、Console.ReadLine:从控制台读入一行、Console.ReadKey:控制台暂停。至于Console.是什么意思不用管。1+1=2的例子
  • 占位符是个什么玩意儿?{0}的个数必须和参数的个数一样,是一一对应的关系。序号从0开始在后面学习String.Format的时候还会用到这个类。

断点的技巧:设置、取消、禁用全部断点、暂停断点、设置条件等。

VS开发环境介绍

解决方案管理器:解决方案、工程、文件
拖动视图、关闭/打开视图、重置窗口布局
C#源文件一般以cs结尾。即使没有VS也能用记事本打开
C#程序的入口是Main函数,在Main中写代码就行,暂时不用关心其他部分是什么意思
错误列表。见到编译错误不用慌。错误排除演示。常见错误:结尾没有分号,大小写错误。
显示代码行号。工具→选项→文本编辑器→C#→显示→行号
修改文本编辑器字体。

设置启动项目,将当前项目自动设置为启动项目,如果运行结果很奇怪,看看是不是没有设置启动项目。

一个解决方案包含多个项目,同时只能打开一个解决方案;在解决方案上点击右键→属性→启动项目,“当前选定内容”是把当前编辑器所在的项目为启动项目,但启动项目就是右键设定启动项目设置的,多启动项目可以让多个项目同时启动,适合于开发客户端、服务器的程序



C#语法

从上到下一条条的依次执行。过去的就让他过去吧,不会返回头执行:int i1=3;int i2=5;int i3=i1+i2;i1=9;。
大小写敏感。String和string 都行是另外一个问题。
函数参数用()包围。错误:string s2 = Console.ReadLine; Console.WriteLine=3,区分方法和属性,看图标颜色。
两句代码之间用分号(;)分割(易错:全角问题)
注释:单行注释、多行注释。批量注释、反注释。用VisualStudio的批量反注释:快捷键、工具栏图标两种方式。



变量

把变量看成放数据的容器。
定义变量的方式:类型 变量名;  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"回车。string:"\"ab\""、"ab\nb"、"c:\\a.txt"、@"c:\a.txt"(推荐)。@表示字符串中的\不当成转义符。@还可以定义多行文本。"\\\\"一命偿一命
"\""中\是告诉编译器不要把这个"当成字符串的结束。
@是不把\当成转义符。@不是万能的,不能解决字符串中有双引号的问题,如果有双引号还是用转义符
‘a’是char,“a”是string。
string s = Console.ReadLine();
难点:问题:
String str=Console.ReadLine();
Console.WriteLine(str);
用户输入a\nb,输出什么?转义符只针对在代码中直接写出的字符串,对于程序中读取出来没有这个问题。\n是给编译器看的。把“河蟹”翻译成“和谐”
简单的类型转换:Convert.ToString()、ToString()、Convert.ToInt32() 。即可用中间变量,也可以不用。int i = Convert.ToInt32(Console.ReadLine());


变量的命名

命名规则:第一个字符必须是字母或者下划线(_),其后的字符可以是任意个数字、字母、下划线。不能全部使用C#的关键字,比如class、namespace、new、void等。判断方式:VS中亮蓝色的就是关键字。
这也是类、函数等的命名规则。还可以使用中文变量名(类名、函数名),不推荐。
潜规则:C#中建议变量的开头用小写。专业的程序员一定要注意大小写的问题!和“命名规则”不一样不是强制性的规定
变量在声明后才能使用
变量的声明:int i;int x,y;int i=3;变量使用之前必须赋值。


运算符、表达式

+、-、*(乘)、/(除)、%(求余)
+可以用作字符串连接,其他不可以。
++(自增)、--(自减)
(*)运算符优先级:i1+i2*i3、(i1+i2)*i3。不要变态,括号是王道。
变量可以和字面量混合运算。
练习:让用户输入两个数,打印出两个数的和。


赋值

赋值运算符=,让左边变量的值等于右边的计算结果。这就能解释令人不解的i=i+1;
(*)+=、-=、*=、/=。
i2=i1++;i2=++i1;(了解)。--同理。
习题:int a=10;a++;a=a+a;Console.WriteLine("{0}",a);执行结果是什么?
int i=10;int j=i;i=5;j=?
int x=10;x+y=80;Console.WriteLine(y); x + y = 80; //左边的必须是变量!!!不能是常量,不能是表达式
习题(重点,难点):交换两个变量的值。易错!!!


布尔运算

相等判断:==,不要和=混淆。WriteLine("{0}",i==1);WriteLine("{0}",i=1);的区别。Console.WriteLine("{0}",i=1);//C#中赋值表达式也有值,它的值表示为赋值后变量的值

不等判断:!=

大小比较:<、>、<=、>=

取反:!

组合运算:&&(并且)、||(或者)。

&& 并且:只有两边都为true的时候,表达式的值才为true,否则是false;

||或者:两边只要有一个为true的时候,表达式的值就是true,否则是false;

&&、||是短路运算,试验。


if

单句的时候大括号可以省略,但是不建议省略,演示说明why。if()else if()和if()if()是不一样的。

if(i>1)
{
}


if(i>1)
{
}
else
{
}

if(i>100||i<10)
{
}

if(i>100&&j>10)

{
}


if(i>100)
{
}
else if(i<10)
{
}
else
{
}


if语句的嵌套

if((i>0&&j>0)||(i<0&&j<0))

{

}


易错代码:

if(i>10);

{

    Console.WriteLine("是");

}


课上练习

学编程不是看书,不是听老师讲,而是自己动手写。
作业1:提示用户输入密码,如果密码是“888888”则提示正确,否则提示错误。
作业2:提示用户输入密码,如果密码是“888888”则提示正确,否则要求再输入一次,如果密码是“888888”则提示正确,否则提示错误。
作业3:提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“888888”,则提示正确,否则提示错误,如果用户名不是admin还提示用户用户名不存在。
注意:变量命名要用有意义的变量名,不要x、y、z。


switch case

被判定的值进入满足条件的分支执行

switch(i)
case 1:
//
break;
case 2:
//
break;


switch(i)
case 1:
//
break;
case 2:
//
break;
default:
break;


switch(i)
case 1:
case 2:
//
break;


case中的值必须是常量,不能是变量、表达式。

switch(i)

case a:

//

break;


类似于if...else...else if...else,但是是离散值的判断。

switch一般都可以用if重写,但是if不一定能用switch重写

不要忘了break。C#中的break不写是不行的,除了合并case的情况


while循环

while(i<100)
{
  //打印i
  i++;
}
只要while后小括号中的表达式为true,就不断执行大括号中的代码
while(不是终点)
{
    跑
}


do
{
  //打印i
  i++;
}
while(i<100)
先做……如果满足则再来一次,直至while表达式为false。至少被执行一次。(*)
易错while(i<0);
{...}


练习1:用while计算1到100之间整数的和;(有更好的数学解法)

练习2:要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。

练习3:不断要求用户输入一个数字,然后打印这个数字的二倍,当用户输入q的时候程序退出(return)。

练习4:不断要求用户输入一个数字(假定用户输入的都是正整数),当用户输入end的时候显示刚才输入的数字中的最大值。设一个变量int max,初始值为0,用户每输入一次就把用户输入的和max比较一下,如果输入的比max大,则让max等于用户输入。陷阱:判断end是在之前还是之后。


循环的中断

break:立即终止整个循环。
continue:立即终止当前循环步骤,进行下一次循环步骤。
练习1:用 while continue实现计算1到100之间的除了能被7整除之外所有整数的和。
练习2:用while break实现要求用户输入用户名和密码,只要不是admin、888888就一直提示要求重新输入。

return:准确的说,return不是循环中断语句,它代表跳出当前方法。


for循环

for(code1;code2;code3)。code1:循环的初始化代码,只在循环开始之前运行一次;code2,bool类型的表达式,每次循环完成前都判断一下是否为true,只有为true才会进行本次循环;code3在每次循环之后执行一次。

for的三段都可以省略,但是不能丢了“;”。

break、continue同样可以应用于for。

for和while代码之间都可以互相转换,究竟用哪种方式则取决于一些惯用用法和个人习惯,不用记,代码写多了自然就有感觉


for(int i=0;i<10;i++)

{
}

for(int i=100;i>0;i--)
{
}

for中终止条件注意是<还是<=。只要想好了想要的最后一个数是什么、第一个数是什么即可

用 for实现计算1到100之间所有整数的和。用 for实现计算200到300之间所有整数的和。


枚举

确定数量、确定值的几个取值:东西南北、男女、上中下。

enum Gender{male,female}
enum QQStatus{online,offline,hidden}

枚举的用法,QQStatus status = QQStatus.online;
和用字符串比起来,用枚举的好处就是限定了变量的取值范围,程序处理起来更方便。

与class同级,也可放到单独的类文件中。


数组

保存多个值。几乎任意类型都可以声明数组。

int[] nums = {5,3,8}

int[] nums = new int[3]

int[] nums = new int[3]{5,3,8}//个数和声明数必须一致

int[] nums = new int[5]{5,3,8}//错误

使用索引器访问指定编号位置的元素,访问数组元素:nums[0]、nums[1]。索引从0开始。取到的元素的类型就是数组元素的类型。还可以对数组元素进行赋值



练习1:从一个整数数组中取出最大的整数

练习2:计算一个整数数组的所有元素的和。

练习6:将一个字符串数组的元素的顺序进行反转。{"3","a","8","haha"} {"haha","8","a","3"}。第i个和第length-i-1个进行交换。

联系7:连接两个int数组为新数组。

练习3:将一个字符串数组{"3","a","8","haha"}输出为|分割的字符串,"3|a|8|haha"

练习4:将一个整数数组的每一个元素进行如下的处理:如果元素是正数则将这个位置的元素的值加1,如果元素是负数则将这个位置的元素的值减1。

练习5:有一个整数数组,请声明一个字符串数组,将整数数组中的每一个元素的值转换为字符串保存到字符串数组中。string[] strs = new string[values.Length];
























0 0
原创粉丝点击