下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C#基础知识25个常见问题(1)2007-04-1216:53当初学C#时是找个人大概问了一下数据类型和分支语句就开始做项目了。这两天又全面的看了一下相关的基础知识(学而时习之嘛),总结了25个问题:1.静态变量和非静态变量的区别?2.const和staticreadonly区别?3.extern是什么意思?4.abstract是什么意思?1.1 nternal修饰符起什么作用?ealed修饰符是干什么的?verride和overload的区另.什么是索引指示器?.new修饰符是起什么作用?.this关键字的含义?.可以使用抽象函数重写基类中的虚函数吗?.密封类可以有虚函数吗?.如果基类中的虚
2、属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有get和set两个呢?.abstract可以和virtual一起使用吗?可以和override一起使用吗?.接口可以包含哪些成员?.类和结构的区别?.接口的多继承会带来哪些问题?.抽象类和接口的区别?.别名指示符是什么?.如何释放非托管资源?.P/Invoke是什么?.StringBuilder和String的区别?.explicit和implicit的含义?.params有什么用?.什么是反射?以下是我做的一份参考答案(C#语言范畴之内),如果有不准确、不全面的,欢迎各位朋友指正!.静态变量和非静态变量的区别?答
3、:静态变量:静态变量使用static修饰符进行声明在所属类被装载时创建通过类进行访问所属类的所有实例的同一静态变量都是同一个值非静态变量:不带有static修饰符声明的变量称做非静态变量在类被实例化时创建通过对象进行访问同一个类的不同实例的同一非静态变量可以是不同的值示例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample01classProgramclassClass1publicstaticStringstaticStr=Class;publicStringnotstaticStr=Ob
4、j;staticvoidMain(string口args)/静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值Console.WriteLine(Class1sstaticStr:0”,Class1.staticStr);Class1tmpObj1=newClass1();tmpObjl.notstaticStr=tmpObjl;ClassitmpObj2=newClass1();tmpObj2.notstaticStr=tmpObj2;/非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的Console.WriteLine(tmpObj1snotstaticStr:0
5、,tmpObjl.notstaticStr);Console.WriteLine(tmpObj2snotstaticStr:0,tmpObj2.notstaticStr);Console.ReadLine();)结果:ClassisstaticStr:ClasstmpObjlsnotstaticStr:tmpObjltmpObj2snotstaticStr:tmpObj2.const和staticreadonly区别?答:const用const修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序staticreadonly用staticreadonly修饰符声明的成员依然是变量,只不过具
6、有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化示例:测试类:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample02Lib(publicclassClassipublicconstStringstrConst=Const;publicstaticreadonlyStringstrStaticReadonly=StaticReadonly;/publicconstStringstrConst=ConstChanged;/publicstati
7、creadonlyStringstrStaticReadonly=StaticReadonlyChanged;客户端代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingExample02Lib;namespaceExample02(classProgram(staticvoidMain(stringargs)(/修改Example02中Class1的strConst初始值后,只编译Example02Lib项目/然后到资源管理器里把新编译的Example02Lib.dll拷贝Example02.exe所在的目录
8、,执行Example02.exe/切不可在IDE里直接调试运行因为这会重新编译整个解决方案!/可以看到strConst的输出没有改变,而strStaticReadonly的输出已经改变/表明Const变量是在编译期初始化并嵌入到客户端程序,而StaticReadonly是在运行时初始化的Console.WriteLine(strConst:0”,Class1.strConst);Console.WriteLine(strStaticReadonly:0,Classl.strStaticReadonly);Console.ReadLine();结果:strConst:ConststrStatic
9、Readonly:StaticReadonly修改后的示例:测试类:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample02LibpublicclassClass1/publicconstStringstrConst=Const;/publicstaticreadonlyStringstrStaticReadonly=StaticReadonly;publicconstStringstrConst=ConstChanged;publicstaticreadonlyStringstrStatic
10、Readonly=StaticReadonlyChanged;)结果strConst:ConststrStaticReadonly:StaticReadonlyChanged.extern是什么意思?答:extern修饰符用于声明由程序集外部实现的成员函数经常用于系统API函数的调用(通过DllImport)。注意,和DllImport一起使用时要加上static修饰符也可以用于对于同一程序集不同版本组件的调用(用extern声明别名)不能与abstract修饰符同时使用示例:usingSystem;usingSystem.Collections.Generic;usingSystem.Tex
11、t;usingSystem.Runtime.InteropServices;namespaceExample03classProgram/注意DllImport是个AttributeProperty,在System.Runtime.InteropServices命名空间中定义/extern与DllImport一起使用时必须再加上一个static修饰符DllImport(User32.dll)publicstaticexternintMessageBox(intHandle,stringMessage,stringCaption,intType);staticintMain()stringmyS
12、tring;Console.Write(Enteryourmessage:);myString=Console.ReadLine();returnMessageBox(0,myString,MyMessageBox,0);)结果:.abstract是什么意思?答:abstract修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员abstract不可以和static、virtual、override起使用声明为abstract成员可以不包括实现代码,但只有类中还有未实现的抽象成员,该类就不可以被实例化,通常用于强制继承类必须实现某一成员示例:usingSystem
13、;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample04#region基类,抽象类publicabstractclassBaseClass/抽象属性,同时具有get和set访问器表示继承类必须将该属性实现为可读写publicabstractStringAttributeget;set;)/抽象方法,传入一个字符串参数无返回值publicabstractvoidFunction(Stringvalue);/抽象事件,类型为系统预定义的代理(delegate):EventHandlerpublicabstracteve
14、ntEventHandlerEvent;/抽象索引指示器,只具有get访问器表示继承类必须将该索引指示器实现为只读publicabstractCharthisintIndexget;)#endregion#region继承类publicclassDeriveClass:BaseClass(privateStringattribute;publicoverrideStringAttribute(get(returnattribute;set(attribute=value;publicoverridevoidFunction(Stringvalue)(attribute=value;if(Eve
15、nt!=null)(Event(this,newEventArgs();publicoverrideeventEventHandlerEvent;publicoverrideCharthisintIndex(get(returnattributeIndex;#endregionclassProgram(staticvoidOnFunction(objectsender,EventArgse)(for(inti=0;i(DeriveClass)sender).Attribute.Length;i+)(Console.WriteLine(DeriveClass)sender)i);)staticvoidMain(stringargs)(D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外伤出血急救培训
- 燃气管网委托运维服务合同
- 《水质富营养化》课件
- 粤教版 信息技术 必修 4.2 用智能工具处理信息说课稿
- 2024版电子商务产品交易协议范本
- 培训计划进展
- 2024版面砖采购合同
- 2024影视作品授权播放与广告分成合同
- 2024年人教版PEP高二历史上册月考试卷
- 地震预防安全主题班会课
- 2025年林权抵押合同范本
- 2024年北师大版四年级数学上学期学业水平测试 期末卷(含答案)
- 智能检测与监测技术-智能建造技术专02课件讲解
- 2025蛇年一年级寒假作业创意与寓意齐【高清可打印】
- 2024年高考物理一轮复习讲义(新人教版):第七章动量守恒定律
- 多系统萎缩鉴别及治疗
- 设备的使用和维护管理制度模版(3篇)
- 浙江省宁波市慈溪市2023-2024学年高三上学期语文期末测试试卷
- 草学类专业生涯发展展示
- 法理学课件马工程
- 2024年广东省公务员录用考试《行测》真题及解析
评论
0/150
提交评论