C#编程基础讲师:杨中科★Net开发环境(*了解).NetFrameworkC#VB.NetF#……开发工具:VisualStudio点Net、DotNetCSharpIronPython提供函数库、类库.Net简介(*了解).NetFrameworkCLR平台无关:CLR、.NetFramework进行了隔离。Windows、Linux(Mono)、智能手机、Web、RIA。学会.Net什么都能开发,知识移植。更安全、更省心:代码托管、罕用指针、垃圾回收。语言无关:VB.Net、C#都调用同样的类、同样的方法,VB.Net写的类C#也可以调用。模糊了语言的差别.Net的版本(*了解).Net1.1.Net2.0.Net3.x.Net4.x……VisualStudio2003VisualStudio2005VisualStudio2008VisualStudio2010……向下兼容大同小异.创建第一个控制台程序并且调试运行。.为什么要从控制台程序开始?不要把精力放到表现层,而是把精力放到写代码上。无论控制台还是Winform还是ASP.Net最难的是写代码,而不是拖控件。.唯一需要学的三条控制台指令:Console.WriteLine:打印输出、Console.ReadLine:从控制台读入一行、Console.ReadKey:控制台暂停。至于Console.是什么意思不用管。1+1=2的例子.占位符是个什么玩意儿?{0}的个数必须和参数的个数一样,是一一对应的关系。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace第一季编程基础{classProgram{staticvoidMain(string[]args){/*Console.WriteLine(hello!!);//打印到屏幕strings=Console.ReadLine();//用户输入文字的时候程序暂停,用户输入完毕后点回车,把用户输入的东西作为返回值,声明一个string类型的变量(容器)s,用s来存放readline()函数返回的值。Console.WriteLine(s+你好!);*/inti1=10;inti2=20;//Console.WriteLine(i1+++i2+=+(i1+i2));//Console.WriteLine({0}+{1}={2},i1,i2,i1+i2);//{0},{1},{2}表示点位符,对应后面的i1,i2,i1+i2。点位符是从为开始,顺序就是从WriteLine第二个参数开始。调用string.Format。Console.WriteLine(请输入男孩的名字:);stringboy=Console.ReadLine();Console.WriteLine(请输入女孩的字句:);stringgirl=Console.ReadLine();Console.WriteLine({0}爱{1},boy,girl);Console.ReadKey();//按一个按键继续执行}}}.解决方案管理器:解决方案、工程、文件.C#源文件一般以cs结尾.C#程序的入口是Main函数,在Main中写代码就行,暂时不用关心其他部分是什么意思.错误列表。见到编译错误不用慌。错误排除演示。常见错误:结尾没有分号,大小写错误。.显示代码行号。工具→选项→文本编辑器→C#→显示→行号.从上到下一条条的依次执行。.大小写敏感.函数参数用()包围.两句代码之间用分号(;)分割(易错:全角问题).注释:单行注释、多行注释。.把变量看成放数据的容器。.定义变量的方式:类型变量名;inti3;.变量的类型:不同类型的容器放不同的东西,铁罐不能放硫酸。不能在int类型的变量中放字符串。如:inti3=”3”//”3”是看起来像数字,它仍然是字符串,所以报错。类型一旦确定,就不能赋值其它类型。.变量不能放和变量类型不兼容的数据。.变量的名字不能重名(不严格).问题•inti=10;Console.WriteLine(i);打印结果是iinti=10;Console.WriteLine(i);//i和i看起来一样。Console.WriteLine(i);stringname=Console.ReadLine();Console.WriteLine(name+你好!);//错误。Console.WriteLine(name+你好!);.string、int、char、bool、decimal(了解)、byte(了解)、double(了解)、long(了解)、float(了解)等。.bool的取值:true、false。.为什么输出要用转义符\,因为编译器默认是遇到开始字符串,再遇到是结束字符串,但是如果遇到前面有\的就不把它当成有字符串起始意义的。.string:\ab\、ab\nb、c:\\a.txt、@c:\a.txt(推荐)。@表示字符串中的\不当成转义符strings=ab;Console.WriteLine(s);Console.WriteLine(\ab\);//\是转义符。Console.ReadKey();//strings=\ab\;//strings=a\nb;//strings=a\\b;//strings=c:\\abc\\1.jpg;//strings=@\\\\;//@表示字符串中的\不当成转义符。strings=@c:\abc\1.jpg;//strings=@ab//错误,@只针对转义符有意义。Console.WriteLine(s);Console.ReadKey();.@不是万能的,不能解决字符串中有双引号的问题,如果有双引号还是用转义符.‘a’是char,a是string.strings=Console.ReadLine();.问题:•Stringstr=Console.ReadLine();•Console.WriteLine(str);•用户输入a\nb,输出什么?转义符只针对在代码中直接写出的字符串,对于程序中读取出来没有这个问题。stringstr=Console.ReadLine();如果输入:a\nbConsole.WriteLine(str);打印:a\nbConsole.ReadKey();//转义字符只针对代码中直接写出的字符串,对于程序读取出来的没有这个问题。.简单的类型转换:Convert.ToString()、ToString()、Convert.ToInt32()。Console.WriteLine(请输入第一个数字:);strings1=Console.ReadLine();//不能用s1声明为int变量。因为Console.ReadLine()读取的是字符串。inti1=Convert.ToInt32(s1);//Convert.ToInt32是将字符串转换成整数类型。Console.WriteLine(请输入第二个数字:);//strings2=Console.ReadLine();//不能用s2声明为int变量。//inti2=Convert.ToInt32(s2);inti2=Convert.ToInt32(Console.ReadLine());//没有容器存放变量,直接把用户输入的值放到ToInt32里面来了,与上两行效果一样,没有区别。Console.WriteLine({0}*{1}={2},i1,i2,i1*i2);Console.ReadKey();.输入一个数,打印这个数的平方。.问题:inti=Convert.ToInt32(Console.ReadLine()).strings1=Console.ReadLine();.inti=Convert.ToInt32(s1);.@可以表示多行字符串.命名规则:第一个字符必须是字母或者下划线(_),其后的字符可以是任意个数字、字母、下划线。不能全部使用C#的关键字,比如class、namespace、new、void等。判断方式:VS中亮蓝色的就是关键字。.这也是类、函数等的命名规则。.中文变量名(类名、函数名)。Console.WriteLine(请输入你的姓名:);string名字=Console.ReadLine();//C#支持中文变量名。Console.WriteLine(名字+你好!);class人{publicint年龄{get;set;}publicvoid说话(){Console.WriteLine(我是中文变变量名的类!);}}人人1=new人();人1.年龄=20;Console.WriteLine(我是中文变量名的类,我的年龄是:+人1.年龄);人1.说话();.C#中建议变量的开头用小写。.下列哪个是正确的变量名?_a、a、a1、a_a、1_a、a1、1a、a3_、a$b、int、int1、ab、A1、INT。inti1;inti2,i4;inti3=8;//声明变量并且赋初值。//Console.WriteLine(i1);错误,局部变量使用之前必须赋初值。i1=3;Console.WriteLine(i1);.变量的声明:inti;intx,y;inti=3;.+、-、*(乘)、/(除)、%(求余).+可以用作字符串连接,其他不可以。将string和其他类型+,会自动tostring();.易错:strings1=hello+yang;.++(自增)、--(自减).(*)运算符优先级:i1+i2*i3、(i1+i2)*i3。不要变态,括号是王道。内层的()先计算。.变量可以和字面量混合运算。inti1=10;inti2=i1+20;Console.Write(i2);.案例:让用户输入两个数,打印出两个数的和。Console.WriteLine(请输入第一个数字:);inti1=Convert.ToInt32(Console.ReadLine());Console.WriteLine(请输入第二个数字:);inti2=Convert.ToInt32(Console.ReadLine());Console.WriteLine({0}+{1}={2},i1,i2,i1+i2);案例:让用户输入圆的半径,打印出圆的面积。Console.WriteLine(请输入圆的半径:);inti=Convert.ToInt32(Console.ReadLine());strings=圆的面积是:;Console.WriteLine({0}{1},s,3.1415926*i*i);.赋值运算符=,让左边变量的值等于右边的计算结果。这就能解释令人不解的i=i+1;inti=10;i=i+1;//是赋值运算,不是数学中的相等判断。Console.WriteLine(i);i=i+i;Console.WriteLine(i);i+=2;//i=i+2,不推荐Console.WriteLine(i);.(*)+=、-=、*=、/=。.i2=i1++;i2=++i1;(了解)。--同理。.习题:inta=10;a++;a=a+a;Console.WriteLine({0},a);执行结果是什么?.易错:inti=10;intj=i;i=5;j=?。答案:10.intx=10;x+y=80;Console.WriteLine(y);x+y=80;//左边的必须是变量!!!不能是常量,不能是表达式intx=20;inty=0;//x+y=80;//错误,赋值运算符左边必须是变量,不是常量或表达式。y=80-x;Console.WriteLine(y);.习题:交换两个变量的值inti1=10;inti2=20;Console.WriteLine(i1={0},i2={1},i1,i2);inti3;i3=i1;i1=i2;i2=i3;Console.WriteLine(i1={0},i2={1}