下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医护理促进骨科患者功能恢复
- 社区护理学(成教专科)第10章 社区救护
- 一例急性心梗合并室壁瘤及心衰患者的护理查房
- 初中八年级科学《生态系统的基石:碳循环与氧循环的协同机制》教案
- 材料科学基础:晶体结构对称性(本科二年级)教学设计
- 小儿肺炎的护理学术交流与合作
- 中医不寐护理方法概述
- 初中八年级历史《万水千山只等闲:中国工农红军长征》教学设计
- 事件监听器在大数据安全中的应用
- 初中八年级道德与法治《用心交友:构建真挚友谊圈》教学设计
- 2026外研版(三起)三年级下册英语期末《语法》专项训练
- 2026年软考-多媒体应用设计师历年真题
- 骨科疼痛患者的疼痛护理人文关怀
- 护理不良事件预防与风险管理
- 社保待遇追缴工作方案
- 雨课堂学堂在线学堂云《兽医外科学与手术学(扬州)》单元测试考核答案
- GB/T 47157-2026芹菜等级规格
- 2026年党委(党组)理论学习中心组试题及答案
- 物理 第九章 浮力课件2025-2026学年沪科版八年级物理全册
- 2025至2030中国洗碗机行业市场调研及增长潜力预测与投资可行性研究报告
- 军用关键软硬件自主可控产品名录(2025年v1版)
评论
0/150
提交评论