理论

来源:互联网 发布:ubuntu搜狗切换中英文 编辑:程序博客网 时间:2024/04/28 15:34

 

一、 什么是CTS、CLS和CLR。(3分)
答:公共语言运行库(CLR)
通用类型系统(CTS)
公共语言规范(CLS)

二、 .Net是否支持多语言开发。(2分)
.Net支持多编程语言开发.

三、 什么是程序集 。(2分)
程序集(Assembly)是一个类型定义、数据文件和资源文件组成的逻辑集合。每个程序集都包含一个程序集
清单。

四、 .NET程序被编译成什么形式的代码,请详细说明编译过程。(4分)
.Net程序在第一次编译后,成为MSIL(微软中间语言),在运行或者部署时,经JIT编译成机器代码。

五、 简述程序集的加载机制。(3分)
程序集加载策略是依次通过版本策略、CODEBASE位置、应用程序域位置和应用程序位置来查找程序集。

六、 如何生成强签名的程序集。(2分)
生成强签名的程序集需要有公钥/私钥对。在得到了公钥/私钥对后,就可以控制编译器的输入参数来得到一个强签名的程序集。对于C#的编译器CSC.exe来说,可以用/keyfile参数来制定使用那个公钥/私钥文件。

七、 如何把程序集放入GAC中。(2分)
可以用gacutil/i命令行来添加。

八、 程序集的版本号分哪几个部分。(2分)
程序集的版本号分四个部分组成:主版本号、次版本号、内部版本号和修订号。

九、 把程序集放入GAC有什么好处?(2分)
首先,使程序集可以共享。其次,可以版本重定向。

十、 做强签名的程序集与不做强签名的程序集有什么不同?(2分)
强签名程序集共享、安全。

十一、 什么是托管代码和非托管代码?(2分)
运行于公共语言运行库的代码叫托管代码。反之,叫非托管代码。

十二、 .NET是所有内建类型的基类是什么?(2分)
System.Object

十三、 System.Object中包含哪些方法,哪些是虚方法?(3分)
System.Object包含了Finalize在内的8个方法。其中有四个虚方法:Equals、GetHashCode和ToString方法。
namespace System
{
public class Object
{
       public static bool Equals(object objA,object objB){}
       public static bool ReferenceEquals(object objA,object objB){}
       public Object(){}
       public virtual bool Equals(object obj){}
       public virtual int GetHashCode(){}
       public Type GetType(){}
       public virtual string ToString(){}       
       protected virtual void Finalize(){}
}

十四、 值类型和引用类型有哪些,它们有什么区别?(3分)
值类型有:基类型、结构、枚举等。引用类型有:类、数组、字符串、委托等。
值类型的赋值会产生一个新的数据副本,所以每个值类型都拥用一个数据副本,而引用类型的赋值则是赋值引用。值类型的对对象分配在堆栈上,而引用类型的对象分配在堆上。

十五、 简述装箱和拆箱原理(3分)
装箱时值类型从堆栈上复制到堆上,而拆箱时从堆上复制到堆栈上。

十六、 C#中方法的参数可以有哪几种传递方式?分别予以解释(3分)
一共有三个可先关键字可以修饰方法的参数:ref、out、params。Ref和out都实现了参数和引用传递,区别在于ref要求参数在传入前被初始化,而out可能不用初始化,params实现了参数数目可变的方法。

十七、 C#支持哪几种访问性级别(访问修饰符)?(3分)
C#实现了5种可访问性级别,并且对应的关键字是private、protected、internal、protected internal 和public。

十八、 C#中的using语句有什么作用?(2分)
引入命名空间  创建别名 强制资源清理
十九、 System.String是值类型还是引用类型?(2分)
是引用类型。

二十、 StringBuilder类型有何作用?(3分)
用于高效的操作字符串。

二十一、 .NET中有哪些常见的流?(2分)
FileStream、NetworkStream、MemoryStream等。

二十二、 如何使用压缩流,举例说明.(哪几个类)(5分)
DeflateStream类型和GzipStream。

二十三、 Serializable特性(属性)有何作用?(2分)
通过为类型添加Serializable特性,可以使对象申明为可被序列化。

二十四、 .NET提供了哪几种可进行序列化操作的类型(格式化程序).(2分)
BinaryFormatter、SoapFormatter和XmlSerializer

二十五、 如何自定义序列化和反序列化的过程,举例说明.(4分)
通过实现Iserializable接口中的GetObjectData方法可以实现自定义的序列化,而通过添加带有SerializationInfo和StreamingContext参数的构造函数可以自定义反序列化的过程。

 

 

二十六、 解释泛型有什么好处?(在哪个命名空间)(3分)
性能提高、类型安全、复用性 命名空间:System.Collections.Generic;

二十七、 什么是序列化?.NET中如何实现序列化?举例说明(4分)
将数据转换为可移植的格式的过程称为序列化。.net的序列化主要通过几个格式化程序对对象进行序列化。


二十八、 如何操作文件和文件夹?(在.NET中用到哪些类可以对文件和目录等操作)(3分)
用File和FilInfo类对文件和文件夹进行操作。用Directory和DirectoryInfo对目录进行操作。

二十九、 如何实现对文件和文件夹的监控功能?(用到哪个类)(2分)
用FileSystemWatcher类对文件和方位夹监控。

三十、 请解释委托的基本原理(3分)
委托就是方法的方法。它可以将方法作为参数,每个委托对象至少包含了一个指向某个方法的指针。
三十一、 委托回调静态方法和实例方法有何区别?(2分)
静态方法直接通过类名调用,实例方法通过实例化的对象调用。

三十二、 什么是多播委托(链式委托)?(2分)
多播委托是指一个由委托串成的链表,当链表上的一个委托被回调时,所有链表上该委托的后续委托将会被顺序执行。

 

三十三、 请说明定义事件的过程.(4分)
1、 定义委托。
2、 定义用委托实现的事件。
3、 定义触发器。


三十四、 事件和委托有何联系.(3分)
事件是一个委托类型,事件的订阅和取消是基于委托来实现的。

三十五、 用代码表示如下情景:猫叫 老鼠逃跑 主人惊醒(5分)

 

 

 

 


三十六、 写程序用一个正则表达式来验证一个Email地址,匹配返加true,否则返回flase.(3分)