基于项目开发的C#.NET程序设计第2章C#程序设计基础知识信息工程学院曾宪权Codingchangestheworld!2.1C#语言基础C#中的数据类型1C#中的常量与变量2装箱与拆箱3C#中的运算符4C#中的表达式56456情景描述本情景实现学生成绩管理系统V0.8的学生成绩的输入,包括学生的学号,姓名,三门课程的成绩,如图1所示。3456情景实现(1)选择“开始”/“程序”/MicrosoftVisualStudio2010/MicrosoftVisualStudio2010命令,打开VisualStudio2010。(2)选择VisualStudio2010工具栏中的“文件”/“新建”/“项目”命令,打开“新建项目对话框”,如图2所示。3456情景实现(跟我做)(3)在Main()方法中输入如下代码:3456相关知识2.1.1C#的常量与变量计算机使用内存来存储数据.我们在计算机中存储数据和客人住旅馆很类似.我们住旅馆一般要做以下事情:1、开房间(单人间、双人间、总统套间)2、入住3456相关知识变量用于存储特定数据类型的值语法:访问修饰符数据类型变量名PublicPrivateProtectedintstringfloat……3456相关知识变量的命名•命名规则:1.必须以“字母”_或@符号开头.--不要以数字开头2.后面可以跟任意“字母”、数字、下划线.注意:1)你起的变量名不要与c#系统中的关键字重复.2)在c#中,大小写是敏感的.3)同一个变量名不允许重复定义(先这么认为,不严谨)•定义变量时,变量名要有意义3456相关知识staticvoidMain(string[]args){//声明布尔型、字符串型、整型、短整型和浮点型变量boolt=false;shortn1=30;intn2=1200;stringstr=jeny;floatn3=23.1f;//显示变量值Console.WriteLine(布尔值=+t);Console.WriteLine(短整型值=+n1);Console.WriteLine(整型值=+n2);Console.WriteLine(字符串值=+str);Console.WriteLine(浮点值=+n3);}变量中存储的值取决于该变量的类型相关知识语法:const数据类型常量名=常量值;常量用于在整个程序中将数据保持同一个值相关知识staticvoidMain(string[]args){//PI常量PIconstfloat_pi=3.1415169F;//由地球引力引起的加速度常量,单位为cm/s*sconstfloat_gravity=980;//钟摆的长度intlength=60;//钟摆的周期doubleperiod=0;//钟摆周期的计算公式period=2*_pi*Math.Sqrt(length/_gravity);Console.WriteLine(钟摆的周期为{0}秒,period);}声明常量在表达式中使用常量const关键字用于声明常量相关知识2.1.2C#的数据类型值类型表示实际数据只是将值存放在内存中值类型都存储在堆栈中int、char、结构引用类型表示指向数据的指针或引用包含内存堆中对象的地址为null,则表示未引用任何对象类、接口、数组、字符串相关知识staticvoidMain(string[]args){//声明一个值类型的整型数据类型intvalue=130;Console.WriteLine(该变量的初始值为{0},value);Test(value);//由于该数据类型属于值类型,所以将恢复其初始值Console.WriteLine(该变量的值此时为{0},value);}staticvoidTest(intbyVal){intt=20;byVal=t*30;}将value的初始值传递给Test()方法被传递的value在Test()方法内被改变不反映已经改变的val值,而保留原始值相关知识staticvoidMain(string[]args){DataTypeobjTest=newDataType();objTest.Value=130;//传递属于引用类型的对象Test(objTest);//由于该数据类型属于引用类型,所以会考虑新处理的值Console.WriteLine(变量的值为{0},objTest.Value);}staticvoidTest(DataTypedata){intt=20;data.Val=temp*30;}将DataTypeTest的引用传递给Test()被传递的value在Test()中改变反映已经改变的value值classDataType{publicintValue;}3456相关知识C#的基本数据类型相关知识结构的定义:structPoint{publicDoublex,y,z;}结构类型的使用:Pointp;p.x=100;p.y=200;p.z=300;struct结构名{public数据类型域名;......publicvoid方法名{//方法的实现}};结构类型可以包含数据成员和函数成员:结构类型(struct)相关知识structstudent{publicintstud_id;publicstringstud_name;publicfloatstud_marks;publicvoidshow_details(){//显示学生详细信息}}数据成员方法所有与Student关联的详细信息都可以作为一个整体进行存储和访问枚举类型是一组已命名的数值常量。C#中的枚举包含与值关联的数字。默认情况下,将0赋给第一个元素,然后对每个后续的枚举元素按1递增在初始化过程中可重写默认值publicenumWeekDays{Monday,Tuesday,Wednesday=20,Thursday,Friday=5}枚举类型(Enumerations)3456相关知识数据类型之间的转换隐式转换:数据转换的过程是自动进行的,不需要程序进行任何额外的工作。必须保证转换后不会导致数据精度的损失,否则不允许。显式转换:又称强制转换。它告知C#的编译器必须按照程序的要求进行这种类型转换,即使发生数据精度的损失也在所不惜。相关原则:不能在数值类型和bool值之间进行转换。不允许转换的结果超出数据类型的表示范围。3456相关知识字符串和数值型的互相转换intfloatdoublestringfloat.Parse()ToString()必须是数字的有效表示形式!3456相关知识使用Convert:Convert.ToXxx(objectvalue)Convert.ToInt32()Convert.ToSingle()Convert.ToString()double85.63string85.63int86float85.633456相关知识2.1.3装箱与拆箱装箱是将值类型转换为引用类型拆箱是将引用类型转换为值类型利用装箱和拆箱功能,可通过允许值类型的任何值与Object类型的值相互转换,将值类型与引用类型链接起来相关知识intvalue=130;objecto=value;Console.WriteLine(“对象的值={0},o);intvalue=130;objecto=value;intnumber=(int)o;Console.WriteLine(num:{0},number);值类型引用类型拆箱装箱值类型引用类型值类型注:被装过箱的对象才能被拆箱相关知识2.1.4运算符与表达式运算符和表达式Result=number*10变量变量常量操作数表达式操作数和运算符的组合运算符相关知识相关知识相关知识相关知识赋值运算符(=)变量=表达式;例如:身高=177.5;体重=78;性别=“m”;相关知识一元运算符(++/--)Variable++;相当于Variable=Variable+1;Variable--;相当于Variable=Variable-1;相关知识相关知识3456相关知识前置和后置自加/自减运算符3456相关知识计算结果:1、inti=0;boolresult=true;result=(++i)+i==2?true:false;result=true3456相关知识staticvoidMain(string[]args){//x1的系数intco1=3;//x2的系数intco2=-5;//二次方程的常数值intconstant=8;//存放表达式b2-4ac的值doubleexp=0;doublex1=0;doublex2=0;Console.WriteLine(二次方程为:{0}x2+{1}x+{2},co1,co2,constant);exp=Math.Sqrt(co2*co2-(4*co1*constant));x1=((-co2)+exp)/(2*co1);x2=((-co2)-exp)/(2*co1);Console.Write(x={0:F2},x1);Console.Write(或);Console.WriteLine(x={0:F2},x2);}将值赋给变量在表达式中使用的算术运算符3456总结变量是存放特定数据类型的值的容器,而常量也存放特定数据类型的值,但常量在整个程序中都保持一致装箱是将值类型转换为引用类型,而拆箱则是将引用类型转换为值类型Codingchangestheworld!2.2选择结构选择结构1多分支结构2switch…case36456任务描述本情景实现学生成绩管理系统V0.8的登录验证,如下图所示。3456任务实现选择“开始”/“程序”/MicrosoftVisualStudio2010/MicrosoftVisualStudio2010命令,打开VisualStudio2010。选择VisualStudio2010菜单栏中的【文件】/【新建】/【项目/解决方案】命令,打开“新建项目对话框”,如图所示。456任务实现修改Program.cs文件,添加如下代码:3456相关知识2.2.1选择结构小明:明天都干什么呀?小红:如果明天下雨,就去教室上自习小丽:如果明天下雨,就去图书馆看书,不下雨的话就去爬山3456相关知识3456相关知识选择结构用于根据表达式的值执行语句if结构的基本语法:if(条件)语句;例如:If(weather==“阴天”){Console.WriteLine(“去教室上自习。”);}346相关知识If_else结构的基本语法:if(条件){语句1;}else{语句2;}例如:if(weather==“阴天”){Console.WriteLine(“去教室上自习。”);}else{Console.WriteLine(“去爬山。”);}3456相关知识练习:对学员的结业考试成绩评测(考虑用if好还是用if-else好)成绩=90:A90成绩=80:B80成绩=70:C70成绩=60:D成绩60:E3456相关知识嵌套if语句3456相关知识2.2.2switch…case语法:switch(选择变量){case值1:…break;case值2:…break;case值3:…break;......default:…}说明:各个case标签不必连续,也不必按特定顺序排列default标签可位于switch…case结构中的任意位置default标签不是必选的,但使用default标签是一个良好的编程习惯每两个case标签之间的语句数不限选择变量的类型可以是整型、字符型或string。3456相关知识练习:对学员的结业考试成绩评测(改成用Switch来做))成绩=90:A90成绩=80:B80成绩=70:C70成绩=60:D成绩60:E3456总结C#提供了以下类型的选择结构:ifif…elseswi