NET复习题.docx
《NET复习题.docx》由会员分享,可在线阅读,更多相关《NET复习题.docx(13页珍藏版)》请在冰点文库上搜索。
![NET复习题.docx](https://file1.bingdoc.com/fileroot1/2023-7/9/85c244b1-0527-4b87-b65f-3473d3e3f37a/85c244b1-0527-4b87-b65f-3473d3e3f37a1.gif)
NET复习题
.NETFrameworkClassLibrary的作用(b)。
A.是.NET托管程序的执行引擎B.供.NET托管程序使用的类型集合
C..NET托管程序的编译程序D.支持.NET托管程序的操作系统
.NETCommonLanguageRuntime的作用(a)。
A.是.NET托管程序的执行引擎B.供.NET托管程序调用的API集合
C..NET托管程序的编译程序D.支持.NET托管程序的操作系统
在命令行下使用CSC命令编译C#源程序时,可使用(c)参数来说明生成库文件。
A./target:
exeB./target:
winexeC./target:
libraryD./target:
module
在命令行下使用CSC命令编译C#源程序时,可使用(d)参数来说明程序中引用的其他程序集。
A./targetB./outC./linkresourceD./reference
因内存不够引发的垃圾回收过程中,下列哪种情形的对象占用的内存将被回收(d)
A.实现了析构方法的类的对象B.处于0代的对象
C.处于2代的对象D.无法从某个根引用抵达的对象
已知委托类型DoSomething定义如下:
publicdelegatevoidDoSomething();则该类型派生自.NET
Framework提供的(a)抽象类。
A.B.C.D.
(d)是.NET类型中唯一没有继承的类型。
A.类B.结构C.枚举D.接口
.NET类型系统中所有的引用类型都继承自且不继承自(c)类型。
A.B.C.D.
float类型的值可以隐式转换成(d)类型的值而保持值不被改变。
A.intB.longC.decimalD.double
C#中的类型int对应.NET类库中的(b)。
A.B.32C.D.
为了将字符串str="123456"转换成整数123456,应该使用以下哪条语句(a)
A.intNum=(str);B.intNum=(int);
C.intNum=(int)str;D.intNum=();
对于不同的流,可以使用(a)属性来查询流是否支持查找操作。
A.CanSeekB.PositionC.CanReadD.CanWrite
下列Stream类中,(a)类用来向其他流提供缓冲区读写支持。
A.BufferedStreamB.MemoryStreamC.FileStreamD.CryptoStream
下列哪个Stream类不存在于命名空间中(d)
A.FileStreamB.MemoryStreamC.BufferedStreamD.NetWorkStream
在托管环境中创建线程后、调用start之前,该线程处于(a)状态。
A.UnstartedB.RunningC.WaitSleepJoinD.Stopped
为了设置线程t1的执行优先级,需访问t1的(a)属性。
A.PriorityB.IsAliveC.IsBackgroudD.ThreadState
x,y都是类MyClass的变量。
为了测试这两个变量是否引用同一个对象,应使用类MyClass的
下列哪个方法进行判断(c)
A.GetHashCodeB.EqualsC.ReferenceEqualsD.ToString
若程序集的配置文件存在,则应起名为(a)。
A.B.C.D.
.NET程序集的配置文件使用(c)格式书写。
A.VB源程序B.C#源程序C.XMLD.HTML
下列哪个数据类型在从托管代码环境传送到非托管代码环境时,不需要使用Interop封送拆收
器进行特殊处理(b)
A.B.C.D.
在webServer中,属性是(a)符号表示的
A.[]B.{}C.()D.””
关于.NET中使用Attribute属性,以下除____外全部错误。
A.Attribute是类中的成员B.Attribute只在Main方法内使用
C.Attribute写在中括号内D.Attribute是MSIL的一部分
已知intn=100;以下语句中只有_____执行了“装箱”。
A:
intk=n;B:
objecto=n;C:
n=200;D:
strings=();
如果要对一个集合以foreach方式执行遍历,则该集合所属的类型至少要实现_____接口。
A:
CollectionBaseB:
ICloneableC:
IEnumerableD:
List
假定当前程序中对象myobj是被有效引用的第二代对象。
此时若执行(),并在随后立即
调用方法(myobj),其返回值等于____。
A:
0B:
3C:
1D:
2
简答题
1.哈希表有什么用途.NET环境下如何使用哈希表
答:
哈希表是一种很有用的但是也是相对复杂的数据结构。
在哈希表集合的每一个元素中都是以键、值对的形式保存数据的。
其中,键和值都是字符串,这些都是存在内存中的。
由于使用独特的地址算法,对其插入,查找和其他的操作的速度都很快,在数据量较大的情形下之一点更明显。
哈希表的查找方式主要为通过已知的键找出其对应的值。
、NET的Hashtable实现了哈希表。
2.什么是MSIL.NET环境下如何产生MSIL的代码
答:
MSIL即微软的中间语言,它与编程语言无关。
MSIL和元数据都存储在标准的Windows可移植可执行文件中。
此文件可以是DLL和EXE文件。
基于CLR的高级编程语言编写的源代码在编译时,将生成两种内容:
以MSIL表示的指令和元数据。
3.什么是.NET环境下的自动“垃圾回收”简述“垃圾回收”所采用的策略。
答:
、NET下收集废弃的内存空间使其重新可用的过程成为垃圾回收。
垃圾回收工作是在、NET下自动执行的。
CLR垃圾回收器首先检查终于最新的一代的对象,回收由垃圾所占有的任何空间。
、NET判断每个对象可以当作垃圾被回收的依据就是不再存在对该对象的有效引用。
GC是、NET框架提供的用于管理垃圾回收的一个类。
3.什么是事件事件与委托有什么关系
答:
委托用来处理在某些编程语言中需要用到函数指针来处理的情况。
事件是一个类通知另一个类的一种途径。
、NET中的事件是一种特殊的委托,这种委托没有返回值,也不允许在其所属的类的外部被调用。
普通的委托是即可以在内部也可在外部被调用的。
4.Web服务是什么它有哪些特点
答:
Web服务是一套崭新的技术标准,定义了应用程序如何在web上实现互操作性。
Web服务的标准是建立在以XML为主的,开发的web规范技术基础上,因此与上一代的对象技术相比具有更好的开放性,是建立客户操作的分布式程序的新平台。
特点:
(1)良好的封装性
(2)松散耦合(3)使用标准协议规范(4)高度可集成能力(5)可跨越通信的防火墙
与WebServer有关的协有什么
(1)SOAP用于提供标准的RPC方法调用Web服务。
(2)WSDL是基于XML的用于定义Web服务的接口即方法名、参数和返回值等有关的属性的语言。
(3)UDDI用于在网上查找Web服务。
6.什么是线程一个.NET应用程序中包含几个线程
线程是一个执行单元。
每一个进程至少要包含一个线程。
什么是线程池,使用线程池有什么优点
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。
线程池线程都是后台线程。
每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。
每个进程仅具有一个用于执行各种方法的线程池,由ThreadPool类管理一组在线程池中运行的线程。
由于不需要在每次启动线程时都进行资源分配,因此会提高性能。
有些情况下不适合使用线程池,例如:
1)需要在前台运行的线程2)需要线程具有特定的优先级3)线程中含有会引起一段时间阻塞的任务4)需要将某些线程放置在单线程的单元中5)需要有与线程关联的稳定的标识,或需要将某个线程专用于某个任务6)需要根据运行情况,动态的对线程进行干涉和控制。
什么情况下使用线程池
在需要使用大量短命线程的情况下,CLR分配内存及创建线程所花费的时间可能会降低应用程序的整体性能。
在这些情况下,可以使用ThreadPool类。
在无需对每个独立的线程进行完全控制的情况下,也可以使用该类。
7.什么是装箱和拆箱它们的实质是什么
答:
装箱是将值类型转换为引用类型。
拆箱是将引用类型转换为值类型。
在装箱时,系统会先从堆中配置一块内存,然后将值类型数据复制到这块内存,最后再使用引用类型数据指向这块内存。
拆箱过程与之相反。
8.Directory类DirectoryInfo类各有什么特点你认为哪个比较好用
答:
Directory类没有属性,他的方法都是静态方法。
并且该类不能被继承。
DirectoryInfo类的基类是抽象类FileSystemInfo。
DirectoryInfo类是有属性的。
实际使用中DirectoryInfo类比Directory类更常用。
9.什么是泛型泛型有什么用
泛型是、NET中特有的类型,定义泛型用list<。
。
。
>语句表示。
泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是累、结构、接口和方法所存储或使用的一个或多个类型的占位符。
泛型的作用就是提高代码的重用性,避免强制类型转换,减少装箱和拆箱,提高性能,减少错误。
代码参考。
1》垃圾回收
usingSystem;
namespaceGCCollectIntExample
{
classMyGCCollectClass
{
privateconstlongmaxGarbage=1000;
staticvoidMain()
{
MyGCCollectClassmyGCCol=newMyGCCollectClass();
("Thehighestgenerationis{0}",);
IO;
publicclassFileSystemWatchCherDemo{
staticvoidMain(string[]args){
FileSystemWatcherwatcher=newFileSystemWatcher(@"C:
\");
=|
||;
+=newFileSystemEventHandler(OnChanged);
+=newFileSystemEventHandler(OnChanged);
+=newRenamedEventHandler(OnRenamed);
watcher.Error+=newErrorEventHandler(OnError);
=true;
("Press‘Enter’toexit…");
();
}
privatestaticvoidOnRenamed(objectsource,RenamedEventArgse){
WatcherChangeTypeschangeType=;
("Thefile{0}{2}to{1}",e.OldFullPath,
}
privatestaticvoidOnChanged(objectsource,FileSystemEventArgse){
("Thefile{0}{1}",,}
privatestaticvoidOnError(objectsource,ErrorEventArgse){
("Anerrorhasoccurred");
}
}
2》IEnumerable接口的实现
usingSystem;
using;
using;
using;
namespace_3_10
{
publicclassContractor
0}]",,;
}
}
publicclassContractors:
IEnumerable
{
privateArrayListAL=newArrayList();
publicIEnumeratorGetEnumerator()ext);
}
catch{
("您输入的IP地址格式不正确。
请重新输入。
。
。
");
}
try{
MyServer=newIPEndPoint(myIP,Int32.Parse(textBox2.Text));
sock=newSocket,,ProtocolType.Tcp);
(MyServer);
(1);ext+"端口"+textBox2.Text+"开始监听...";
=false;
=true;
=false;
=false;
=true;
sock=();.";
=false;
=false;
=false;
=true;
=true;
sock.Connect(MyServer);
="与主机"+textBox1.Text+"端口"+textBox2.Text+"连接成功!
";
threadHalt=false;
="已与客户端建立连接";
Threadthread=newThread(newThreadStart(targett));
();
}
catch(Exceptionex)
{
);
}
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
try
{
threadHalt=true;
();
="与主机的连接已断开";
=true;
=false;
=true;
=false;
=false;
}
catch{}
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
try
{
stringmsg=+"->"++"\r\n";
Byte[]bya=());
(bya,,;
}
catch
{
("连接尚未建立!
无法发送!
");
}
}
privatevoidbutton6_Click(objectsender,EventArgse)
{
();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
=false;
}
privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse)
{
if
{
="正在关闭连接。
。
。
";
threadHalt=true;
();
}
}
}
}
3》线程池
请按以下要求建立C#的控制台应用程序。
(1)该程序应完成子任务甲、乙、丙、丁、戊、己、庚、辛、壬。
这些子任务之间存在的前趋关系如图1所示。
(2)为了提高运行效率,要求该程序使用多线程技术,除主线程外,另加入一至二个分线程。
这些线程应尽可能提高子任务间并发性,但需要适当进行同步性控制,以满足图1中规定的关系。
(3)程序中可适当使用Thread类的Join方法或AutoResetEvent类对象WaitOne方法解决同步性问题。
并且当用Join方法能解决问题时就不要使用WaitOne方法。
(4)为了突出重点,可将子任务甲、乙、丙、丁、戊、己、庚、辛、壬分别以简单输出语句代替,如(“甲”);等。
图1