您好,欢迎访问三七文档
.NET基础培训教目录C#基础...........................................................12.2变量..............................................................................................................................12.3常量..............................................................................................................................52.4预定义数据类型...........................................................................................................52.5流控制........................................................................................................................112.6数组............................................................................................................................202.7命名空间.....................................................................................................................212.8C#预处理器指令.........................................................................................................272.9C#编程规则.................................................................................................................292.10内容总结.....................................................................................................................332.11独立实践.....................................................................................................................33对象和结构......................................................353.1类和结构.....................................................................................................................353.2类和成员.....................................................................................................................363.3构造函数.....................................................................................................................443.4结构............................................................................................................................483.5部分类........................................................................................................................513.6内容总结.....................................................................................................................563.7独立实践.....................................................................................................................561C#基础2.1变量在C#中声明变量使用下述语法:datatype变量名称;例如:inti;该语句声明int变量i。声明i之后,就可以使用赋值运算符(=)给它分配一个值:i=10;还可以在一行代码中声明变量,并初始化它的值:inti=10;如果在一个语句中声明和初始化了多个变量,那么所有的变量都具有相同的数据类型:intx=10,y=20;//xandyarebothints要声明类型不同的变量,需要使用单独的语句。在多个变量的声明中,不能指定不同的数据类型:intx=10;booly=true;intx=10,booly=true;//这是不符合语法规定的!注意上面例子中的//和其后的文本,它们是注释。//字符串告诉编译器,忽略其后的文本。本章后面会详细讨论代码中的注释。变量的初始化C#在使用变量之前必须进行初始化。否则系统会提示错误,我们来做一个例子演示一下变量的初始效果,见实例2。例2:演示一个变量的初始化解决方案:启动VS,输入如下代码publicstaticvoidMain(){intd;Console.WriteLine(d);}在编译这些代码时,会得到下面的错误消息:Useofunassignedlocalvariable'd'此例子说明变量在输出之前需要进行初始化。变量的作用域变量的作用域是可以访问该变量的代码区域。一般情况下,确定作用域有以下规则:只要字段所属的类在某个作用域内,其字段(也称为成员变量)也在该作用域内。局部变量存在于表示声明该变量的块语句或方法结束的封闭花括号之前的作用域内。在for、while或类似语句中声明的局部变量存在于该循环体内。局部变量的作用域冲突大型程序在不同部分为不同的变量使用相同的变量名是很常见的。只要变量的作用域是程序的不同部分,就不会有问题,也不会产生模糊性。但要注意,同名的局部变量不能在同一作用域内声明两次,所以不能使用下面的代码:intx=20;//somemorecodeintx=30;我们用实例3演示局部变量的作用域冲突。例3:变量的作用域解决方案:启动VS,输入如下代码usingSystem;namespaceConsoleApplication1{publicclassProgram{publicstaticvoidMain(){for(inti=0;i10;i++){Console.WriteLine(i);}//igoesoutofscopehere//Wecandeclareavariablenamediagain,because//there'snoothervariablewiththatnameinscopefor(inti=9;i=0;i--){Console.WriteLine(i);}//igoesoutofscopehereConsole.ReadLine();}}}这段代码使用一个for循环打印出从0~9的数字,再打印从9~0的数字。重要的是在同一个方法中,代码中的变量i声明了两次。可以这么做的原因是在两次声明中,i都是在循环内部声明的,所以变量i对于循环来说是局部变量。我们重新做一个例子:publicstaticvoidMain(){intj=20;for(inti=0;i10;i++){intj=30;//Can'tdothis-jisstillinscopeConsole.WriteLine(j+i);}Console.ReadLine();}如果试图编译它,就会产生如下错误:Program.cs(12,14):errorCS0136:Alocalvariablenamed'j'cannotbedeclaredinthisscopebecauseitwouldgiveadifferentmeaningto'j',whichisalreadyusedina'parentorcurrent'scopetodenotesomethingelse其原因是:变量j是在for循环开始前定义的,在执行for循环时应处于其作用域内,在Main方法结束执行后,变量j才超出作用域,第二个j(不合法)则在循环的作用域内,该作用域嵌套在Main方法的作用域内。编译器无法区别这两个变量,所以不允许声明第二个变量。字段和局部变量的作用域冲突在某些情况下,可以区分名称相同(尽管其完全限定的名称不同)、作用域相同的两个标识符。此时编译器允许声明第二个变量。原因是C#在变量之间有一个基本的区分,它把声明为类型级的变量看作是字段,而把在方法中声明的变量看作局部变量。我们用例4演示了字段和局部变量的作用域。例4:字段与局域变量作用之间的冲突解决方案:启动VS输入如下代码usingSystem;namespaceConsoleApplication1{classProgram{staticintj=20;publicstaticvoidMain(){intj=30;Console.WriteLine(j);Console.ReadLine();}}}即使在Main方法的作用域内声明了两个变量j,这段代码也会编译——j被定义在类级上,在该类删除前是不会超出作用域的(在本例中,当Main方法中断,程序结束时,才会删除该类)。此时,在Main方法中声明的新变量j隐藏了同名的类级变量,所以在运行这段代码时,会显示数字30。如果要引用类级变量,该怎么办?可以使用语法object.fieldname,在对象的外部引用类的字段或结构。在上面的例子中,我们访问静态方法中的一个静态字段,所以不能使用类的实例,只能使用类本身的名称:publicstaticvoidMain(){intj=30;Console.WriteLine(Program.j);}2.2常量在声明和初始化变量时,在变量的前面加上关键字const,就可以把该变量指定为一个常量。顾名思义,常量是其值在使用过程中不会发生变化的变量:constinta=100;//Thisvaluecannotbechanged常量具有如下特征:常量必须在声明时初始化。指定了其值后,就不能再修改了。常量的值必须能在编译时用于计算。因此,不能用从一个变量中提取的值来初始化常量。如果需要这么做,应使用只读字段。常量总是静态的。但注意,不必(实际上,是不允许)在常量声明中包含修饰符static。在程序中使用常量至少有3个好处:常量用易于理解的清楚的名称替代了含义不明确的数字或字符串,使程序更易于阅读。常
本文标题:NET基础培训教程
链接地址:https://www.777doc.com/doc-2883900 .html