您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 给排水/暖通与智能化 > C#学习摘要
C#语言使用组件编程。C#语言是完全面向对象的,在C#中不再存在全局函数、全区变量,所有的函数、变量和常量都必须定义在类中,避免了命名冲突。C#语言不支持多重继承。usingSystem;//导入命名空间。//为C#语言新增解释方法,解释到本行结束classWelcome//类定义,类的概念见下一节{/*解释开始,和C语言解释用法相同解释结束*/staticvoidMain()//主程序,程序入口函数,必须在一个类中定义{Console.WriteLine(请键入你的姓名:);//控制台输出字符串Console.ReadLine();//从键盘读入数据,输入回车结束Console.WriteLine(欢迎!);}}高级语言总是依赖于许多在程序外部预定义的变量和函数。在C#语言中使用using语句导入名字空间,usingSystem语句意义是导入System名字空间,用于导入预定义的变量和函数,这样在自己的程序中就可以自由地使用这些变量和函数。C#程序中每个变量或函数都必须属于一个类,包括主函数Main()。程序所完成的输入输出功能是通过Console类来完成的,Console是在名字空间System中已经定义好的一个类。Console类有两个最基本的方法WriteLine和ReadLine。ReadLine表示从输入设备输入数据,WriteLine则用于在输出设备上输出数据。文件的集合叫做一个项目。类,它的主要思想是将数据(数据成员)及处理这些数据的相应方法(函数成员)封装到类中,类的实例则称为对象。类可以认为是对结构的扩充:类中不但可以包括数据,还包括处理这些数据的函数。类是对数据和处理数据的方法(函数)的封装。类是对某一类具有相同特性和行为的事物的描述。用定义新数据类型Person类的方法把数据和处理数据的函数封装起来。类的声明格式如下:属性类修饰符class类名{类体}类体用于定义类的成员。常用的访问权限控制字如下:private(私有),public(公有)。在数据成员或函数成员前增加访问权限控制字,可以指定该数据成员或函数成员的访问权限。私有数据成员只能被类内部的函数使用和修改,私有函数成员只能被类内部的其它函数调用。类的公有函数成员可以被类的外部程序调用,类的公有数据成员可以被类的外部程序直接使用修改。公有函数实际是一个类和外部通讯的接口,外部函数通过调用公有函数,按照预先设定好的方法修改类的私有成员。封装:第一是把数据和处理数据的方法同时定义在类中。第二是用访问权限控制字使数据隐蔽。用如下方法声明类的对象:PersonOnePerson=newPerson().C#只能用此种方法生成类对象。在程序中,可以用OnePerson.方法名或OnePerson.数据成员名访问对象的成员。构造函数和类名相同,没有返回值。析构函数的名字为类名,无返回类型,也无参数。Person类的析构函数为~Person()。C#这种面向对象语言关键是要有一个面向对象的思想。重写的概念:是子类(即派生类)的方法覆盖父类(即基类)的虚方法。重写的要求:1、三相同:(1)方法名称相同(2)参数列表相同(3)返回值类型相同总结:Publicabstractvoidpay();abstract方法没有方法实现,必须继承Publicsealedoverridevoidpay(){}sealed方法必须是重写父类的方法Publicstaticvoidpay(){}static方法通过类名访问Publicvirtualvoidpay(){}virtual方法子类可以对其override或newPublicnewvoidpay(){}父类的方法pay不一定是virtual也可以为非虚方法Publicoverridevoidpay(){}父类的方法pay一定要是virtualC#静态方法与非静态方法比较三:C#静态方法是一种特殊的成员方法它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式。1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整个类!2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.4.C#中的方法有两种:实例方法,静态方法.形参:全称为形式参数是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数.实参:全称为实际参数是在调用时传递个该函数的参数.形参:形式上的参数,没有具体值。你在写一个方法的时候当然不知道具体值而实参:是你调用方法时给的参数,给的是和所调用方法所匹配的具体值。数值传递的时候,实参是不变的,形参是随着计算而变化的。实参和形参的区别:1.英文名字不同,这个上面我已经标注了,看英语教材的朋友可以参考下2..本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。3.在调试的时候,parameter就转变成argument,这时也往往不使用argument一词,而是称之为variable(变量),因为实参本质上就是一个变量,在内存中占用一块空间。替代作用,调用时用实参替代形参。实参全称为实际参数是在调用时传递该函数的参数.实参可以是常量、变量、表达式等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。形参全称为形式参数是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数.形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参.没有形参的函数在形参表的位置应该写void.main。形参和实参的区别2013-05-2317:00:01|分类:IDL&envi|字号订阅形参和实参的区别形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生“类型不匹配”的错误。4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。一般情况下在调用函数的时候传递的是实参,在函数内部的参数是形参。形参就是一个变量,实参就是一个值!当把值传给变量才起作用。我们定义函数时所用来表示被调用时将接收到的参数就叫形参当函数实际被调用时我们赋给他的参数就叫实参。在定义函数时,函数名后面括号中的变量名称为“形式参数”,简称“形参”;在主函数中调用一个函数时,函数名后面括号中的参数(可以是一个表达式)称为“实际参数”(简称“实参”)。在主函数里的是实参,在子函数里的是形参。因为在真正执行的时候是把实参传递给形参来执行的,所以实参才是实际的参数。知道函数的调用吧?调用函数你可能需要函数给你个返回值来用,比如求面积的函数,你传入参数后需要函数返回个面积结果吧?否则你调用函数干什么。但是有时候我们不需要函数返回值,而只是进行一系列操作,比如打印啊什么的。所以函数分为四种:有参有返回值无参有返回值有参无返回值无参无返回值比如:intfun(inta,intb)//函数的类型就是返回值的类型{returna+b;//返回两个数的和}main(){inta=1,intb=1;intc=fun(a,b);//调用fun后return回一个值这个值被C获取}函数返回值就可以理解为解决一个问题以后得到的结论,把这个结论交给别人,就像写在书上成为一个定理,来让别人使用。将结果传递给调用处。就是函数的运算结果。就是在函数调用中被调用的函数会带回一个函数运行得到的值。所谓函数返回值是一个函数在运算结束以后向调用它的母函数或者系统反馈一个值,这个值可以是各种变量类型.。返回值就是返回一个值,为什么要返回一个值呢?因为我们用c#实现一些功能,这些功能被分成好多个方法。比如有计算加法的方法,有计算乘法的方法等等,举个例子publicint加法(一个数,另一个数)这是一个加法的方法,你只要把两个数传进去,他就会返回结果,返回的结果就叫返回值。。用的时候我们定义一个数字类型的变量,比如叫a,写法就是inta;我们调用加法这个方法,加法(1,1)我们让这个变量等于加法的返回值a=加法(1,1)这时a变量的值就是2了。返回到被调用的地方,就是从被调函数返回到主函数。返回到调用该函数的地方,这样你就可以轻松实现调用函数的功能,而不需自己再编辑。函数的返回值其实很简单,你把函数看成一个具备某种功能的黑盒子,调用函数的时候,就相当于给它传入函数要求的数据,然后函数开始按它的功能运行,最后输出一个运行结果,这个输出的结果就是返回值。只是不同的函数实现不同的功能。调用函数的时候传入的叫参数,传入的参数要严格的按函数的定义要求,如参数的类型。如果有多个参数还必须按每个参数的顺序来传入。当然函数不一定要返回一个值,可以返回空值。返回值是函数在被调用之后根据其传入的参数来进行运算从而获得一个最终的值,这值称函数的返回值。就是函数算出来的东西,基本上都是数值。虚方法:可以被重写的方法,可以灵活使用。虚方法与非虚方法(普通方法)基本一样,只是在它前面加上了virtual(虚拟的)关键字,当类中的方法声明前加上了virtual关键字,我们称之为C#虚方法,反之为非虚方法。使用了virtual关键字后,不允许再有static、abstract或override修饰符。对于非虚的方法,无论被其所在类的实例调用,还是被这个类的派生类的实例调用,方法的执行方式不变。而对于虚方法,它的执行方式可以被派生类改变,这种改变是通过方法的重写(override)来实现的。重写、覆盖、重载、多态几个概念的区别分析override-重写(=覆盖)、overload-重载、polymorphism-多态override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则:1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(publicprotecteddefaultprivate)。3、重写的方法的返回值必须和被重写的方法的返回一致;4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。6、静态方法不能被重写为非静态的方法(会编译出错)。overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。重载的规则:1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不
本文标题:C#学习摘要
链接地址:https://www.777doc.com/doc-4692686 .html