版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务2设计系统基础信息类C#程序设计在“智慧寝室一体化管理平台”中,我们需要描述客观世界中的学生、寝室等个体对象,同时它们又具有相似的共同特征与行为。例如,寝室对象的共有特性包括寝室号、床位数、桌椅数、住宿费等,具有可在全校范围内查找某个学生所在寝室信息,或查询某间寝室的住宿情况等功能。本任务将通过学习C#基础语法知识,创建智慧寝室管理系统所需的基础信息类。任务描述C#基础语法类和对象类的成员类的方法静态类与静态成员相关知识变量与表达式0102常量与变量C#基本数据类型0304数据类型转换运算符与表达式常量就是值在程序整个生命周期内始终不变的量,使用关键字const声明。常量必须在声明时初始化,并且在使用过程中,不可以对常量进行赋值的改变。常量声明的基本语法为:[访问修饰符]const类型标识符
常量名=value;
例:publicconstdoublePI=3.1415926;constintMAX_LENGTH=100;常量的声明变量
C#中,声明变量的一般语法是:类型标识符变量名1,变量名2,变量名3,……;
例:intmyNumber; stringstrName,strPassword;
可在声明变量的同时初始化变量,为变量赋值:
类型标识符变量名=表达式;
例:doubled=0.618; boolb1=true,b2=false;变量的声明
C#在变量声明时,变量的命名规则应该遵守一些基本规则:符合标识符的定义;在有效的程序范围内必须是唯一的;不能是关键字(或称作保留字),如非要使用时需在关键字前添加@作为前缀。为了便于代码的维护和阅读还应该注意:采用有实际意义的变量名,做到见其名知其意注意大小写的不同,如:MyName、myName、myname采用PascalCase或CamelCase方式命名变量名变量的声明在进行程序设计时,对程序中声明的每一个用于保存信息的变量,必须同时指明它的数据类型,以便计算机了解需要处理的是什么数据,并且应以何种方式来处理、存储和显示该数据。C#的数据类型主要有两个类别:值类型和引用类型。C#基本数据类型值类型和引用类型决定了对象在内存中的存储位置
——堆或栈:C#基本数据类型
(a)值类型数据(b)引用类型数据不同类型变量在内存中的存储位置
intx=12,y;TextBoxtB1=newTextBox();TextBoxtB2;y=x;tB1.Text=''ab'';tB1.Width=100;
C#基本数据类型
(a)初始时
值类型与引用类型数据在内存中的存储情况
(b)变量值改变后
y=50;tB2=tB1;tB2.Text=''cde'';值类型是一种由类型的实际值表示的数据类型。C#常用的值类型可分为:
简单类型
结构类型
枚举类型
可为空的值类型值类型C#简单类型:数值类型:整型、实数型字符类型:char布尔类型:逻辑值,取值只能是true或者false简单类型C#类型说明sbyte8位有符号整数(-27~27-1)short16位有符号整数(-215~215-1)int32位有符号整数(-231~231-1)long64位有符号整数(-263~263-1)byte8位无符号整数(0~28-1)ushort16位无符号整数(0~216-1
)uint32位无符号整数(0~232-1)ulong64位无符号整数(0~264-1)整数类型简单类型例如:shorti=10;intj=100;bytex=10;uinty=-100;C#类型说明float单精度浮点数,值范围为±1.5×10-45~±3.4×1038,7位有效数字double双精度浮点数,值范围为±5.0×10-324~±1.7×10308,15~16位有效数字decimal保存±1.0×10-28~±7.9×1028,28~29位有效数字简单类型float类型在数值后加上后缀F或f
floata=0.5f;double类型加后缀D或d
doublea=0.5;doubleb=0.5d;decimal类型加后缀M或m
decimala=0.5m;//编译错误,1.53为double类型,不能将double值赋给float型变量floati=1.53;实数类型字符类型
char:数据范围是0-65535之间的
Unicode字符集中的单个字符以单引号为标志 'A'//一个简单字符
'张'//一个简单字符'\u0041'//Unicode字符值'\n'//转义字符
字符含义\'单引号\''双引号\\反斜杠\0空字符\a警铃\b退格\f换页\n换行\r回车\t水平制表\v垂直制表简单类型转义字符——特殊的char布尔类型
truefalse
程序中通常根据布尔类型数据的值来进行流程控制//定义布尔型变量flag、text,初值分别为false和trueboolflag=false,text=true;//定义一个布尔型变量real,判读3是否等于5,则real=falseboolreal=(3==5);简单类型
结构类型(Struct)把多个不同类型的数据组合到一起。语法:struct标识符{ //结构成员定义}例,下面代码定义了一个用于表示圆的结构。
structCircle{ publicintx,y; //用以确定圆心的坐标 publicintradius; //圆的半径 publicCircle(inta,intb,intr){…} }结构类型枚举(Enumeration)实际上是为一组在逻辑上密不可分的整数值提供便于记忆的符号。默认情况下,第一个枚举元素的值为0,后面每个枚举元素的值依次递增1。语法如下:enum枚举名{枚举成员表}[;]
例如:enumWeekDay{Sun,Mon,Tue,Wed,Thu,Fri,Sat}枚举类型在C#中,当需要表示基础值类型的未定义值时,通常使用可为空的值类型。声明一个nullable类型的语法如下: <类型标识符>?<变量名>=null;
例如:int?n=10;bool?flag=null;可为空的值类型引用类型(Reference)不直接存储变量值,存储的实际上是引用值的地址。实际使用时,引用也可以是null,这表示它当前不引用或不指向任何对象。C#的引用类型有4种:类(class)、数组(array)、委托(delegate)和接口(interface)。在类类型中常用的3个类是:
1.object类 object类是C#中所有类的基类,其他的类都是由object类直接或间接派生出来的。因此,对于任一个object变量,均可以赋以任何类型的值。例如:doublenum=12.3D; objectmyObj1; myObj1=num; 引用类型
2.string类string类是专门用于对字符串进行操作的。一个字符串是被双引号包含的一系列字符。
例如:
stringstr1="你好!"; stringstr2="C#。"; stringstr3=str1+str2; charc=str3[0];引用类型3.数组类数组(Array)代表一组相同类型变量的集合,其中的每一个变量称为数组的元素。数组元素可以为任意类型,包括数组类型。C#声明数组的方法是在类型后面放一对空的方括号,然后加上数组名:
类型标识符[]数组名;
例:string[]StudentNames;引用类型3.数组类数组在被访问之前必须初始化,初始化有两种方式: 1.由字面形式指定数组的完整内容,例:
int[]numbers={1,2,3,4,5}; 2.使用关键字new,先直接指定数组的大小,再初始化所有数组元素,例:
int[]numbers=newint[5]{1,2,3,4,5};引用类型类型转换就是不同数据类型之间的转换。C#的数据类型转换分为隐式转换和显式转换。隐式转换就是将低精度数值转换为高精度数值。
若两种变量的类型是兼容的或者目标类型的取值范围大于源类型时,此时类型转换就由系统自动完成。例: inta=100; floatb=a;数据类型转换在不能满足隐式转换的情况下,必须使用显式(强制)类型转换。1.使用目标类型显式转换:(目标类型)变量或表达式;例: inta=80;shortb=(short)a; 2.使用Convert类:目标类型=Convert.转换方法(源类型);例: intmyNum; myNum=Convert.ToInt16(“120”); 数据类型转换在不能满足隐式转换的情况下,必须使用显式(强制)类型转换。3.使用Parse()方法:数值类型名.Parse(字符串型表达式);例:intx=int.Parse("789");4.使用ToString()方法:变量名.ToString();例: intmyNum=100; stings=myNum.ToString(); 数据类型转换使用装箱与拆箱可以完成值类型和引用类型之间的转换,它使值类型能够被视为对象。装箱转换允许将值类型隐式转换为引用类型。拆箱步骤: 1.先检查对象实例是否为给定值类型一个装了箱的值。 2.然后将该值从实例中复制出来。例: inta,b=2000; objectobj=b; //装箱 a=(int)obj; //取消装箱 Console.WriteLine(100.ToString()); 装箱与拆箱运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C#提供了多种运算符:算术运算符移位运算符关系和类型测试运算符逻辑运算符条件运算符赋值运算符表达式是运算符与操作数的组合。这里的操作数就是变量与常量。运算符与表达式运算符与表达式算术运算符就是用于常规运算功能的符号,它们是:加法运算符: +减法运算符: -乘法运算符: *除法运算符: /求余数运算符:%自增运算:++自减运算:--例: intx=3/2; //结果为1intx=5/10,x=? doublex=3.0/2; //结果为1.5 intx=7%3; //结果为1 doublex=7%1.5; //结果为1算术运算符赋值是将某一数值赋给某个变量的过程。赋值操作符的左操作数必须是一个变量;赋值结果是将一个新的数值存放在变量所指示的内存空间中。例:
stringMessage="Myfavoritesportsis:";Message+="basketball."; 结果为:
Message="Myfavoritesportsis:basketball."赋值运算符关系运算符用于在程序中比较两个值的大小。关系运算的结果类型是布尔型。关系运算符包括==、!=、<、>、<=和>=。例:
inta=100,b=90; boolj=a>b; Console.WriteLine("a>bis{0}",j);
关系运算符逻辑运算(布尔运算):使用逻辑运算符把运算对象连接起来的表达式称为逻辑表达式,结果:true和false。例: boolb1=!true; //b1的值为false boolb2=8>5&&1>2; //b2的值为false boolb3=5>3||1>6; //b3的值为true逻辑运算符(1)typeof运算符,用于获得某一类型的System.Type对象。 typeof(类型);(2)sizeof运算符,sizeof运算符用于获得值类型的大小(字节)。 sizeof(类型);(3)new运算符,用于创建新的类型实例,如类类型、值类型、数组类型和委托类型的实例。例: Class1MyClass=newClass1(); int[]MyArray=newint[2];
其他特殊运算符(4)?:三目运算符,是根据布尔表达式的值返回两个值中的一个。如果条件为真,则返回第一个值,否则返回第二个值。
(布尔表达式)?条件为true的结果:条件为false的结果;例:(Zhang_age>Li_age)?"张三大于李四":"张三小于李四";(5)is运算符,用于检测一个对象是否与特定类型兼容,运算的结果类型为布尔型。使用方法为:对象is类型。
(6)as运算符,用于执行引用类型的显式类型转换,运算的结果类型是布尔型。使用方法为:对象as类型。若要转换的对象与指定类型兼容,则转换成功;若类型不兼容,则转换失败,返回null。其他特殊运算符运算符的优先级C#基础语法类和对象类的成员类的方法静态类与静态成员相关知识类和对象0102类的声明类的实例化和对象类是面向对象的程序设计的基本构成模块。通常把具有相同性质和功能的事物所构成的集合体叫做类。譬如人类、植物类、交通工具类等。而具体到每一个人,某一棵树木或某一辆汽车,都是他们所在类的一个实例,在OOP技术中,将这种实例称作为对象。类类的声明使用class关键字。在class关键字前还可以加上类的属性集或者访问修饰符,用于限制外部对类和类成员的访问。类的声明格式:[类的修饰符]class类名[:基类名和接口列表]
{
类的成员;
}类的声明例:publicclassstudent{publicstringname;privateintage;protectedvoidwork();}修饰符说
明new仅允许在嵌套类声明中使用,表示所修饰的类会把继承的来的同名成员隐藏起来public对该类的访问不受限制protected只能从其所在类和所在类派生的子类进行访问internal只有本组合体(其所在工程项目文件内)的所有的类才能访问private只能为.NET中的应用程序或类库进行访问abstract抽象类,不允许建立类的实例,能用作其它类的基类sealed密封类,不允许被继承,不能用作其它类的基类类的声明
类的实例化与对象声明了类之后,就可以通过new关键字来创建对象(或称为类的实例)。对象是一个引用类型的变量。它的创建格式如下:类名对象名=new类名([参数]);对象创建后,就可以通过对象访问类中的成员如数据和方法了。使用方法是:对象名.成员方法名([参数]);或对象名.数据=value;类在计算机中是一种抽象的数据类型。而对象就是一个类的具体实例。对象包含成员变量和成员方法(函数)等,变量组成了对象中的数据,而方法可以访问对象中的变量。例:classanimal{//声明animal类publicstringcolor;//声明animal类成员}classcat{ //声明cat类voidMethod(){//声明cat类的方法
animalMyPet=newanimal();//创建实例
MyPet.color="white";//访问实例成员}}
类的实例化与对象相关知识C#基础语法类和对象类的成员类的方法静态类与静态成员类的成员0102类成员的访问字段0304属性构造函数与析构函数05索引器类成员的访问对类的成员的访问,也使用访问修饰符。这些修饰符定义了类的成员的不同访问权限。如果类的成员在声明时没有指定任何访问修饰符,其默认值为private。字段相当于简单变量,它可以声明为静态的,也可以声明为只读的。当字段被声明为只读时,与声明为const的效果是一样的,其区别在于,只读型表达式在程序运行时形成,而const型表达式的值在编译时就形成了。语法格式:字段[修饰符]字段类型字段名classA{publicinti; //公有的整型字段publicreadonlystrings="IlikeC#.";//公有的只读字符串字段privatefloatf; //私有的浮点型字段}字段属性是提供对对象或类的特性进行访问的成员。属性是字段的正常延伸——都是与类型相关的有名称的成员,并且访问字段和属性的语法相同。与字段不同的是:属性不指示存储位置。作为字段的替代,为了对它们的数值进行读写,属性有访问符来指定要执行的语句。这样,属性为读写对象的属性的相关行为提供了某个机制,并且它们允许哪些属性可以被访问。属性封装性为字段生成属性后,字段的访问修饰符就不是public了属性[修饰符]返回类型属性名
{ get{语句集合} set{语句集合}}
public
intWheels
{get{returnwheels;}set{wheels=value;}
}小窍门:在VS里选中要生成属性的字段,使用快捷键Ctrl+r+e能快速生成属性属性只读属性[修饰符]返回类型属性名{ get{语句集合};}只写属性[修饰符]返回类型属性名{set{语句集合};}属性在C#中,当属性访问器中不需要任何其他逻辑时,允许使用自动实现的属性,这会使得属性的声明更加简洁。publicclassPerson{publicstringId{get;set;}publicstringName{get;set;}publicintSex{get;set;}}可以像字段一样初始化自动实现属性,例如:publicstringName{get;set;}="张三";属性构造函数:在建立类的对象时,需做一些初始化工作,这些可以用构造方法来完成,构造方法的名字与类名相同,无返回值。每当用new生成类的对象时,自动调用类的构造方法。一个类可以定义多个含不同参数的构造方法。析构函数:类的对象被撤销时,将自动调用析构方法。一些善后工作可放在析构方法中完成。析构方法的名字为类名前面加一个“~”符号,无返回类型,也无参数。构造函数与析构函数构造函数与析构函数特性构造函数析构函数命名构造函数的名字必须与类名相同析构函数的名字必须与类名相同,前面加一个“~”符号参数与返回值构造函数可以带参数,但没有返回值析构函数不能带参数,也没有返回值调用方式构造函数在对象定义时被自动调用当撤销对象时,自动调用析构函数继承与重载如果没有给类定义构造函数,则编译系统会自动生成一个默认的构造方法
析构函数不能被继承,也不能被重载构造函数与析构函数索引器(indexer)是属性的一种,同时本质上索引器和属性都是一种方法。和属性的区别:
数据成员是数组或者其他集合,使用索引器完成数据访问权限的控制功能。索引器[修饰符]返回类型this[数据类型标识符]{ get{语句集合} set{语句集合}}区别于属性索引器索引器的定义调用索引器调用索引器索引器相关知识C#基础语法类和对象类的成员类的方法静态类与静态成员类的方法0102方法的定义方法的调用0304方法参数的传递方式方法的重载方法的定义方法是一个执行可以由对象或类完成的计算或行为的成员。方法有一个形式参数列表(可能为空)、一个返回值(或void)并且可以是静态也可以是非静态。静态方法要通过类来访问。非静态方法也称为实例方法,通过类的实例来访问。[修饰符]返回类型方法名([形式参数表])
{//方法体
}方法的定义示例:将原有的长方形扩大factor倍public
voidmagnify(intfactor){length=length*factor;width=width*factor;
}方法的定义class
Student{public
string
sno;public
string
sname;public
doublesum(doublescore1,doublescore2)
{returnscore1+score2;}}方法定义后,就可以通过类名或者对象名来进行调用,调用形式如下:(1)静态方法的调用形式为:类名.静态方法名([参数列表]);
(2)实例方法调用的一般形式为:实例名=new类名([构造函数参数表]);//创建类的实例(对象)实例名.方法名([参数列表]); //通过实例调用方法
(3)如果是在同一个类的内部调用方法,则不需要指定对象名,形式为:方法名([参数列表]);方法的调用方法的调用在方法声明中使用的参数叫形式参数(形参)在调用方法中使用的参数叫实际参数(实参)在调用方法时,参数传递就是将实参传递给形参的过程。参数传递Max类定义中声明方法时的形参如下:public
intIntMax(inta,intb){}则声明对象max后调用方法时的实参如下:max.IntMax(x,y);使用值传递Swap方法代码如下:
public
voidSwap(inta,intb){ intc=a; a=b; b=c;}
调用该方法的语句代码如下:
Swap(a1,b1);使用引用传递Swap方法改写如下:
public
voidSwap(ref
inta,ref
intb){ intc=a; a=b; b=c;}调用该方法的语句代码如下:
Swap(refa1,refb1);
//
在实参中增加ref关键字参数传递使用输出参数Add方法代码如下:staticvoidAdd(inta,intb,outintsum)//声明输出参数sum以获得方法返回值{ sum=a+b;}调用该方法的语句代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长春健康职业学院《护理管理》2025-2026学年期末试卷
- 长春大学旅游学院《新闻采访与写作》2025-2026学年期末试卷
- 福建中医药大学《管理会计》2025-2026学年期末试卷
- 长治医学院《康复生理学》2025-2026学年期末试卷
- 厦门演艺职业学院《新闻学概论补充题》2025-2026学年期末试卷
- 安徽艺术职业学院《精神障碍学》2025-2026学年期末试卷
- 黄山职业技术学院《社区工作》2025-2026学年期末试卷
- 2025年什邡市选聘新兴领域专职党建工作组织员真题
- 2026年2o2o年中考语文试卷及答案
- 2026年23注会经济法试题答案
- 办公楼室内装修改造工程施工组织设计方案
- “双碳”目标下低碳建筑全生命周期碳排放核算
- 水利工程施工监理规范SL288-2014(CB、JL用表全套)
- 《网上观看大熊猫》名师课件
- GA/T 2133.2-2024便携式微型计算机移动警务终端第2部分:安全监控组件技术规范
- (正式版)HGT 3655-2024 紫外光(UV)固化木器涂料
- 湘教版高中数学必修二知识点清单
- 2024年山东出版集团有限公司招聘笔试参考题库含答案解析
- 2023年初级会计职称《初级会计实务》真题
- (中职)电子技术基础与技能教ppt教学课件汇总完整版电子教案
- 氢气管道施工技术管理及质量控制
评论
0/150
提交评论