您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 给排水/暖通与智能化 > C#试题和答案
复习题1.什么是类?什么是结构体?二者有什么区别?相同点是什么?你经常使用类还是结构体?为什么?类:同一类对象共同属性和行为的抽象结构体:同一类共同属性和行为的抽象二者区别:类:引用类型结构体:值类型二者相同点:对共同属性和行为的抽象2..怎样理解静态变量和静态方法?静态构造函数的作用是什么?静态变量:属于类,不属于对象静态方法:不用创建类的实例,直接使用类的方法,方法变量在栈上,静态构造函数的作用:初始化类的静态数据成员,在代码加载时执行;程序中无法调用静态构造函数,此前的任何修饰符都是无效的;静态构造函数,没有参数3.值类型与引用类型有什么区别?值类型:数据存储在栈上,直接存储数据本身引用类型:数据存储在堆上,在栈上引用其地址1.二者区别:所有内置对象,除了object和string以外,都是值类型,所有用户定义类型,除了结构体都是引用类型;C#内置值类型(13种)类型大小(字节).net类型说明byte1Byte无符号(0-255)八种sbyte1Sbyte有符号(-128~127)short2Int16有符号(short)(-32768~32767)ushort2Unt16无符号(short)(0~65535)整型Int4Int32Uint4Uint32Long8Int64Ulong8Uint64Char2CharUnicode字符float4Single三种浮点型Double8DoubleDecimal8Decimalbool1BooleanTrueorfalse除了基本类型,C#还有两种值类型:enum(枚举)和struct(结构);编译器会默认带小数点的数为double类型,要赋值给一个float型变量,需要在数字后面加上f;常见转义字符:\’单引号\”双引号\\反斜杠\0空\a警铃\b回退\f换页\n换行\r回车\t水平制表\v垂直制表4.override与重载有什么区别?Override:覆盖:在继承关系中,父类中的虚方法,在子类中需要重写时Overload:重载:同一个类中,函数名相同,参数列表不同,实现不同功能5.你在什么情况下会用到虚方法?它与接口有什么不同?子类要重写父类中的方法时,父类中方法应声明为虚方法;接口:只有方法声明,没有方法体,可以有属性和索引器(都是方法),有概念上的共同特征,要用接口实现,没有方法体虚方法:不但有方法声明,还要有方法体6.什么是抽象方法?什么是抽象类?抽象方法:只有方法声明,没有方法体抽象类:类前加关键字abstract,则为抽象类,抽象类不能创建对象一个类中,如果有抽象方法,则该类一定为抽象类;但是抽象类中不一定有抽象方法7.怎样理解类、抽象类、和接口之间的异同?抽象程度不同:接口:最高程度抽象,忽略对象,只考虑行为概念,不考虑行为的具体实现类:对象属性和行为的抽象,以及重点考察方法的具体实现过程抽象类:二者中间:行为一样,实现不同8..c#是一种纯粹面向对象的语言。面向对象语言具有什么特点?抽象,封装(结果是类),继承,多态9.类和类之间有哪些关系?继承,多态,聚合,组合,关联10.@的作用是什么?是转义字符失效,用在常量字符串前,表示常量字符串没有需要转义的字符11.什么是序列化?为什么要序列化?(什么时候必须作序列化?)如何实现序列化?序列化:把对象数据成员转化为字节流,只序列化数据成员,不序列化方法为了把对象保存到存储介质或者在网络上传输,做序列化!默认的序列化方法:类的定义前加属性:Serializable,编译器会将序列化方法添加到类中自定义序列化方法:接口:ISerilizable(GetObjectData方法),还需要加上属性反序列化:BinaryFormatter,SoapFormatter12.阐述C#中的访问修饰符。类和类的成员的访问修饰符分别有哪些?权限是什么?类的Public:任何地方都可用,Internal:当前程序集中可用类成员的Public:Protected:本身和子类Private:13.什么是操作符重载?为什么要操作符重载?如何实现操作符重载?操作符重载:在不改变操作符固有的含义情况下,重新定义操作符,目的:扩大操作符的作用范围,必须公有,静态,放在一个类中PublicStatic返回类型operator——(参数列表),该操作符,作用在该类上ClassA{PublicStatic返回类型operator——(Aa,。。。)//必须出现一个}14.C#中有指针吗?十三种基本数据类型有指针,其他数据类型没有指针,在非安全模式下用15..c#中的委托是什么?事件是不是一种委托?委托的作用是什么?委托:是一种特殊的类:不用Class而用Delegate定义,目的:封装一个方法的名称作用:取代C++中的函数指针,把方法封装在委托对象中定义委托对象,达到传递方法的目的事件是委托定义的一个变量,事件只能作为类的数据成员出现,不能在方法体中出现16.什么是应用程序域?将进程的进一步划分为多个应用程序域,每个应用程序域运行一个应用程序。应用程序域之间相互隔离,互不影响。不对进程的进一步细分,一个进程里面可以有多个应用程序域17.怎样理解托管代码?运行在。NET平台上的代码,运行在CLR(CommonLanguageRuntime)公共语言运行库上的代码,都是托管代码18.怎样理解强类型系统?强类型系统:声明变量时,就指定其存放的数据类型,如C#;JavaScript是弱类型系统*19.解释装箱和拆箱装箱:值类型到Ojbect类型,或者该值类型所实现的任何接口类型之间的转换。对值类型装箱,会在堆上分配一个实例对象,并将该值复制到新的对象中。在栈上在堆上Inti=123;图示:Objecto=i;拆箱与该操作相反。20.const和readonly的区别是什么?ref、out、和params的作用和区别是什么?Const:定义常量,只能在定义时,初始化;Readonly:只读变量,可以在定义时初始化,也可以在构造函数里初始化Ref:强制引用传递,阻止形参对实参的临时拷贝,实参和形参指向同一存储区域,Out:Params:修饰传递可变参数的数组,21.这些符号的含意是什么:&、&&、|、||、!、^、~。&:按位与,&&:逻辑与,操作数为逻辑表达式,;短路现象:a1=T,a2=F,(a1=null计算A1&&a2汇报错)a1&&a2,a2&&a1,a1||a2,a2||a1,1.结果一样2。效率不一样。|:||:!:逻辑非~:按位取反^:异或22.CTS、CLS、CLR是什么?图示VB.Net、C#.net、CTS、CLS、CLR之间的关系?CTS:CommonTypeSystem公共类型系统CLS:CommonLanguageSpecification公共语言规范CLR:CommonLanguageRuntime公共语言运行库跨语言开发:CTS;C#.NET,C++,VB等语言遵循CLS,---CTS---CLR23.c#中property与attribute的区别,他们各有什么用处,这种机制的好处在哪里?123o123IntProperty:类中的一种成员,如:方法,索引器,一般格式:publicstringName{get{returnthis._name;}set{this._name=value}Attribute:(本身是一个类)一种解释说明,用来解释如何编译源代码,一般用[……]包含起来用处:property:私有成员的读写;(与索引是同一类东西)避免私有成员的直接暴露。Attribute:加入注解和说明24.TCP、UDP的异同?TCP:面向连接的,可靠的,传输控制协议,速度慢UDP:非面向连接的,不可靠的,用户数据包协议,速度快25.怎样把array复制到arraylist中?Int[]arr=newInt[]{1,0,2,3,4,5,6};ArrayListlist=newArrayList(arr);List.addrange(arr);26.将数组a1中从第6个成员起10个数据成员拷贝到数组a2中Array.Copy(a1,6,a2,0,10);Array.Sort(a1);升序排序Array.Reverse(a1);倒序排序27.string和strbuilder的区别,为什么要写这两个类?String:定义常量字符串。Strings=“abc”;Stringbuilder:可变字符串S1=”hello”;S2=”World”;S1+=s2;StringBuilderbuilder=newStringBUlder(s1);Builder.Append(s2);内部字符数组:默认为十六个字符28.什么是程序集?强命名?GAC?程序集:面向.NETFramework已经编译好的可独立发布最小逻辑单元,强命名:strongName标识程序集,加强了的名字,名字+公钥(ID)+版本+文化GAC:全局程序集缓存GlobalAssemblyCache,本质上是一个文件夹assembly29.接口有几种实现模式?请解释接口的显式实现有什么意义?实现模式:显示,隐式;实现方法时,前面加上接口的名字,即为显示实现模式,反之,为隐式实现模式意义:一个类继承多个接口的时候,签名相同的方法需要实现时,必须使用显示实现模式,以区别于不同的接口30.请列出c#中几种循环的方法,并指出他们的不同For:带有索引的集合,用For循环Foreach:使用范围广,当一个集合实现IEnumerator接口或者GetEnumerator()方法时,可以用该循环方法,Foreach(Objectoinlist)其中o为只读的。While:Do……while:至少执行一次31..通过超连接怎样传递中文参数?HyperLinklink=newHyperLink();1.Link.NavgatorUrl=string.Format(“~/Default.aspx?Name={0}”,HttpContext.Current.Server.UrlEncode(中文名称));2.HttpUtility.UrlEncoding();31’.如何通过cookie保存中文参数?32.请编程遍历页面上的所有textbox控件并给它赋值为string.empty?webform:foreach(Controlcontrolinthis.Form.Controls){if(controlisSystem.Web.UI.WebControls.TextBox){TextBoxtxt=(TextBox)control;txt.Text=fdsafds;//string.Empty;}}winform:foreach(System.Windows.Forms.Controlcontrolinthis.Controls){if(controlisSystem.Windows.Forms.TextBox){System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;tb.Text=String.Empty;}}33.什么是form表单?Form表单:客户端向服务器发送信息,Get:参数放在Url中,Post:参数放在body中,formmethod=”Get/Post”action=”Default.aspx”/form:用get/post请求方法将该form表单中的数据提交到Default。Aspx页面34.什么是cookie?什么是session?path:客户端的浏览器使用这个pathcookie保存到客户端,决定cookie什么时候被返回服务器。当客户请求一个cookie的path指明的路径下的资源的时候返回服务器。cookie的作用:客户访问的http协议,是无状态的,无记忆的,web服务器无法识别上次和这次请求是否是用同一个协议,客户发过来的所有请求都是相互独立的,没有任
本文标题:C#试题和答案
链接地址:https://www.777doc.com/doc-3931131 .html