.NET面试题集
 
 
1.    C# property attribute的区别,他们各有什么用处,这种机制的好处在哪里?
2.
讲一讲你理解的web service,dot net framework中,怎么很好的结合xml?(讲概念就行了)
3. C#, Java
c++的特点,有什么相同的地方,不同的地方,C#分别从c++java中吸取了他们那些优点?
4. C#
可否对内存进行直接的操作?(这可是个难点哦?要注意!)
5.
Visual C++ 6.0编写的代码(unmanaged code),如何在CLR下和其他dot net component结合?
6.
以前作过的一些项目?介绍一下自己的编程经验。(这是蒙混不过去的,基本一问就知道是真是假)
7.
你对公司有什么期望?你的薪水期望值?为什么学计算机?以前的工作经验(这非常重要)?

Q3
维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么
Q4
ADONET相对于ADO等主要有什么改进?
Q5
ASPNETASP相比,主要有哪些进步?
Q6
C#中的委托是什么?事件是不是一种委托?
Q7
:描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
Q8
C#中要使一个类支持FOREACH遍历,实现过程怎样?
Q10
:写一个HTML页面,实现以下功能,左键点击页面时显示您好,右键点击时显示禁止右键。并在2分钟后自动关闭页面。
Q11
:你对XMLHTTPWEBSERVICE 了解吗?简单描述其特点、作用
Q12
:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
Q13
:自定义控件和一般用户控件的异同?如果要用这两者之一,你会选择哪种?为什么
Q14
:大概描述一下ASPNET服务器控件的生命周期
Q15
UML
Q16
:面向对象的概念,主要特点
Q17
:类划分的依据。类粒度问题
Q18
:事物管理问题

第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,Static Nested Class Inner Class的不同,说得越多越好(面试题有的很笼统)
第四,&&&的区别。
第五,HashMapHashtable的区别。
第六,Collection Collections的区别。
第七,什么时候用assert
第八,GC是什么? 为什么要有GC?
第九,String s = new String("xyz");创建了几个String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
第十二,sleep() wait() 有什么区别?
第十三,Java有没有goto?
第十四,数组有没有length()这个方法? String有没有length()这个方法?
第十五,OverloadOverride的区别。Overloaded的方法是否可以改变返回值的类型?
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
第十七,给我一个你最常见到的runtime exception
第十八,errorexception有什么区别?
第十九,List, Set, Map是否继承自Collection接口?
第二十,abstract classinterface有什么区别?
第二十一,abstractmethod是否可同时是static,是否可同时是native,是否可同时是synchronized?
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
第二十三,启动一个线程是用run()还是start()?
第二十四,构造器Constructor是否可被override?
第二十五,是否可以继承String?
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
第三十二,编程题: 写一个Singleton出来。
数据库方面:

1.
存储过程和函数的区别
2.
事务是什么?
3.
游标的作用?如何知道游标已经到了最后?
4.
触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。

1
。用C#实现以下功能
a
产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
b
对上面生成的数组排序,需要支持升序、降序两种顺序
2
。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
3
。请说明.net中的错误处理机制,并举例
4
。请说出强名的含义
5
。请列出c#中几种循环的方法,并指出他们的不同
6
。请指出.net中所有类型的基类
7
。请指出GAC的含义
8
SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值

您在什么情况下会用到虚方法?它与接口有什么不同?
Q
Override与重载有什么区别?
Q
:值类型与引用类型有什么区别?
Q
:怎样理解静态变量?
Q
:向服务器发送请求有几种方式?
Q
DataReaderDataset有什么区别?
Q
:如果在一个B/S结构的系统中需要传递变量值,但是又不能使用SessionCookieApplication,您有几种方法进行处理?
Q
:用.netB/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
Q
:软件开发过程一般有几个阶段?每个阶段的作用?
Q
:微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?
Q
:请列举一些您用到过的设计模式以及在什么情况下使用该模式?
Q
:您对WebService的体会?
Q
:您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平?
Q
:您离职的原因是什么?
Q
:通过超链接怎样传递中文参数?
Q
:请编程遍历页面上所有TextBox控件并给它赋值为string.Empty
Q
:请编程实现一个冒泡排序算法?

1
override与重载的区别
2
.net的错误处理机制是什么
3
C#中接口和类的异同
4
DataReaderDataSet的异同

1.
有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.
2.
如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.
3.A
类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.
4.
需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.

.填空题
1.c#
中的三元运算符是__?:___?
2.
当整数a赋值给一个object对象时,整数a将会被__装箱(封装)___?
3.
类成员有_____种可访问形式? this.;new Class().Method;
4.public static const int A=1;
这段代码有错误么?是什么? const不能用static修饰
5.float f=-123.567F;
int i=(int)f;
i
的值现在是_____? 123
6.
利用operator声明且仅声明了“==”,有什么错误么?
7.
委托声明的关键字是______? delagete
8.
sealed修饰的类有什么特点?密封,不能继承
9.
Asp.net中所有的自定义用户控件都必须继承自________?Control
10.
.Net中所有可序列化的类都被标记为_____?
11.
.Net托管代码中我们不用担心内存漏洞,这是因为有了______?gc
12.
下面的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F(); // new public abstract void F();
}

13.
当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以 or 不可以)从T派生出新的类,不可以____(可以 or 不可以)直接创建T的任何实例。
14.
下面这段代码有错误么?
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault; //wrong
CaseTwo();
break;
}
15.
.Net中,类System.Web.UI.Page 可以被继承么?可以

.简答题
1.
c#usingnew这两个关键字有什么意义,请写出你所知道的意义?using 指令和语句 new 创建实例 new 隐藏基类中方法
4.
谈谈类和结构的区别?类是引用类型、结构是值类型
5.
一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。
6.
对于这样的一个枚举类型:
enum Color:byte{
Red,
Green,
Blue,
Orange
}
string[] ss=Enum.GetNames(typeof(Color));
byte[] bb=Enum.GetValues(typeof(Color));
试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。
7.
您了解设计模式么?请列出您所知道的设计模式的名称。 //
8.
请在SQL Server中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路?
9.
什么叫做SQL注入,如何防止?请举例说明。
10.
下面这段代码输出什么?为什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
//
不相等,因为比较的是对象

1.
写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“.”,对其设计测试用
2.
对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯)
开发语言概念题
3.
什么是反射?
4.
Singleton如何写设计模式
5.C#
中的垃圾回收机制是怎样的?
6.
什么是Application Pool
7.
链表和数组的区别,各有什么优缺点.
8.Remoting
在客户端服务器怎么实现 ?
9.
什么是友元函数?
10.
用标准C如何实现多态?
11.
什么是虚函数?
12.
什么是抽象函数?
13.
什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?

英语题
14.
用英文介绍一下使用C#/C++做的项目,主要功能
15.
如果要与美国开电话会议,会如何与美国的工程师沟通
16.
如果老板认为你的技术落后,你会怎么回答

数据库知识题
17.
使用什么工具来调用存储过程
18.SQL Server
的两种索引是何形式?索引的作用?索引的优缺点?
19.
触发器的作用

其它知识题及问题
20.
什么是Web Service
21.
什么是XML
22.Socket
怎么实现?

----------------------------------------------------------------------------------------------
某人的答案
请大家指出我的错误

1. C#
property attribute的区别,他们各有什么用处,这种机制的好处在哪里?
一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质

2.
讲一讲你理解的web service,dot net framework中,怎么很好的结合xml?(讲概念就行了)
不会,正在学习中

3. C#, Java
c++的特点,有什么相同的地方,不同的地方,C#分别从c++java中吸取了他们那些优点?
相同点:都是C系的,都是面向对象
不同点:Java,C#都是建立在虚拟机机制上,而C++不是

4. C#
可否对内存进行直接的操作?(这可是个难点哦?要注意!)
可以

5.
Visual C++ 6.0编写的代码(unmanaged code),如何在CLR下和其他dot net component结合?
编译Dll[DLLImport]

6.
以前作过的一些项目?介绍一下自己的编程经验。(这是蒙混不过去的,基本一问就知道是真是假)
7.
你对公司有什么期望?你的薪水期望值?为什么学计算机?以前的工作经验(这非常重要)?

Q3
维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么
触发器,性能好,事务性

Q4
ADONET相对于ADO等主要有什么改进?
新增dataset等,不需要随时保持连接,性能提高

Q5
ASPNETASP相比,主要有哪些进步?
asp
解释形,aspx编译型,性能提高,有利于保护源码

Q6
C#中的委托是什么?事件是不是一种委托?
委托是一种安全的函数指针,事件是一种消息机制

Q7
:描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
不会

Q8
C#中要使一个类支持FOREACH遍历,实现过程怎样?
实现一个接口

Q10
:写一个HTML页面,实现以下功能,左键点击页面时显示您好,右键点击时显示禁止右键。并在2分钟后自动关闭页面。
JS
代码

Q11
:你对XMLHTTPWEBSERVICE 了解吗?简单描述其特点、作用
xmlhttp
可以主动获取远端web代码,类似HttpWebRequest

Q12
:接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
接口用于规范,抽象类用于共性。

Q15
UML
统一建模语言

Q16
:面向对象的概念,主要特点
封装,基层,多态



数据库方面:

1.
存储过程和函数的区别
存储过程是编译好的存储在数据库的操作,函数不用说了。。。

2.
事务是什么?
具有原子性特点

3.
游标的作用?如何知道游标已经到了最后?
指示当前记录的位置,检查NULL

4.
触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
一个是操作前,一个是操作后

1
。用C#实现以下功能
a
产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];

b
对上面生成的数组排序,需要支持升序、降序两种顺序
ArrayList
本身就能排序

2
。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate)
简单,但易丢失
application
全局
cookie
简单,但可能不支持,可能被伪造
input ttype="hidden"
简单,可能被伪造
url
参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱


3
。请说明.net中的错误处理机制,并举例
try catch final

4
。请说出强名的含义
具有自己的key,可以在GAC为公用

5
。请列出c#中几种循环的方法,并指出他们的不同
for wile foreach

6
。请指出.net中所有类型的基类
object

7
。请指出GAC的含义
全局程序集缓存

8
SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
select @@id...
什么的,忘了

您在什么情况下会用到虚方法?它与接口有什么不同?
前面已说

Q
Override与重载有什么区别?
一个是重写父类函数,一个是同一个函数的几种形式

Q
:值类型与引用类型有什么区别?
值和指针的区别

Q
:怎样理解静态变量?
所有实例公用一个的变量

Q
:向服务器发送请求有几种方式?
get post

Q
DataReaderDataset有什么区别?
一个是只能向前的只读游标,一个是内存中的表

Q
:如果在一个B/S结构的系统中需要传递变量值,但是又不能使用SessionCookieApplication,您有几种方法进行处理?
input type=""
url
数据库

Q
:用.netB/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
三层,表现,逻辑,数据,安全性,维护性

Q
:软件开发过程一般有几个阶段?每个阶段的作用?
需求分析,架构设计,代码编写,QA,部署

Q
:请列举一些您用到过的设计模式以及在什么情况下使用该模式?
著名的singleton


Q
:您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平?
Q
:您离职的原因是什么?
Q
:通过超链接怎样传递中文参数?
URLEncode URLDecode

Q
:请编程遍历页面上所有TextBox控件并给它赋值为string.Empty
foreach

1.
有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.
同一个名称控件直接,或者反射

2.
如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.
const static int classNum=0;
classNum++;

3.A
类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.
构造先父后子,析够反之

4.
需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
string inputStr=" xx xx ";
inputStr=Regex.Replace(inputStr.Trim()," *"," ");

.简答题
1.
c#usingnew这两个关键字有什么意义,请写出你所知道的意义?using 指令和语句 new 创建实例 new 隐藏基类中方法
using
引入名称空间或者使用非托管资源
new
新建实例或者隐藏父类方法

4.
谈谈类和结构的区别?
类是引用类型、结构是值类型

5.
一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。
和前面那个差不多,一样

6.
对于这样的一个枚举类型:
enum Color:byte{
Red,
Green,
Blue,
Orange
}
string[] ss=Enum.GetNames(typeof(Color));
byte[] bb=Enum.GetValues(typeof(Color));
试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。
foreach

9.
什么叫做SQL注入,如何防止?请举例说明。
利用sql关键字对网站进行攻击。过滤关键字'

10.
下面这段代码输出什么?为什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
//
不相等,因为比较的是对象

1.
写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“.”,对其设计测试用例
inputStr=inputStr.ToCharArray().Reverse().ToString();

2.
对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯)
太宽了。。。

开发语言概念题
3.
什么是反射?
动态获取程序集信息

4.
Singleton如何写设计模式
static
属性里面new ,构造函数private

5.C#
中的垃圾回收机制是怎样的?
三个generation,当每个generation内存满了的时候检查引用,无引用就回收内存

6.
什么是Application Pool
Web
应用,类似Thread Pool,提高并发性能

7.
链表和数组的区别,各有什么优缺点.
一个可以动态增长,一个固定(VB中可以Redim),性能数组教好

8.Remoting
在客户端服务器怎么实现 ?
9.
什么是友元函数?
friendly
声明,可以访问protect级别方法

11.
什么是虚函数?
可以被重写

12.
什么是抽象函数?
必须被重写

13.
什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?
C++,C
中忘了释放内存,内存不会再次分配

数据库知识题
17.
使用什么工具来调用存储过程
任何一种语言

18.SQL Server
的两种索引是何形式?索引的作用?索引的优缺点?
cluster
和非cluster,加速查找,占用额外控件,维护索引耗费时间

19.
触发器的作用
保证数据库操作变更能接到通知

其它知识题及问题
20.
什么是Web Service
使应用程序在整个网上可以被调用

21.
什么是XML
可扩展标记语言,可以做配置文件,可以传输数据,可以存储数据

22.Socket
怎么实现?
这个不知道怎么说了。。。
 
1.1.1 Visual Studio.NET 有几个集成开发环境?
● A.一个 ○ B.两个 ○ C.三个 ○ D.四个
 
1.1.2 我们称.NET编程架构是什么?
● A..NET Framework ○ B.VS.NET ○ C.XML Web Service ○ D. 开发工具
 
1.1.3 以下那些标准是与Web Service相关的
○ A..SOAP ○ B. WSDL ○ C.UDDI ○ D. 以上都是
 
1.1.4 SOAP标准是谁来制定的?
○ A. Microsoft ● B. W3C ○ C.IBM ○ D. SUN
 
1.1.5 Visual Studio.NET 会支持多少种开发语言?
○ A. 两种 ○ B. 三种 ○ C.四种 ● D. 多种
 
1.1.6 ASP.NET 是用来开发何种应用的?
○ A. Windows应用 ○ B. .NET组件类 ● C. Web应用 ○ D. 命令行应用程序
 
1.1.7 C#编译器将C#程序编译成什么样的代码?
A. 汇编语言代码
B. 机器语言代码
C. 微软中间语言代码
D. 二进制代码
答案:C
 
1.2 B 类题
1.2.1 所有的.NET基类库是用什么语言编写的?
○ A. C++ ● B. C# ○ C. VB.NET ○ D. 汇编
 
1.2.2 什么语言提供了对XML注释的支持?
○ A. C++ ● B. C# ○ C. VB.NET ○ D. Jscript
 
1.2.3 关于微软中间语言,下面什么说法错误的?
●A. 它是解释执行的。
B. 在执行时,它被转化为机器代码。
C. 它是处理器无关的指令集。
D. 它允许真正的跨语言集成。
 
 
1.2.4 . ASP.NET比ASP相比较,下列哪个是不正确的?
A. 支持更多编程语言
●B. 可以同时存在于一个应用程序里
C. 用户界面和代码分离,大大提高编程质量
D. 都支持页面级和应用程序级的跟踪调试
 
1.2.5 关于VB.NET,与C#(发音,C sharp)比较,下列哪项是不正确的?
A. 都是类型安全的编程语言。
B. 都支持自动垃圾收集。
C. 都是面向对象的语言。
●D. VB.NET不支持API调用。
 
 
1.2.6 微软在VS.NET默认安装中提供了几种编程语言的开发环境?
A. 2种
B. 3种
●C. 4种
D. 5种
 
 
2 抢答(规则,题念完了,才可以抢答)
 
2.1 下列哪些不是公共语言运行环境(CLR)的特性?
●A. 代码执行管理
●B. 管理函数指针调用
C. 类型安全
D. 代码访问安全
 
 
2.2 下面哪个不是ADO.NET对象?
A. 数据适配器DataAdapter
●B. 记录集Recordset
C. 数据集DataSet
 
2.3 什么工具来进行数据库建模?
A. SQL Server。
B. VS.NET架构版中的Visio。
●C. VS.NET的集成环境。
D. Biztalk Server。
 
2.4 ACT(微软应用程序中心测试工具)能够用来进行下面哪些测试:
A. Web应用程序的功能性测试
B. 性能测试
C. 压力测试
●D. 以上所有
 
2.5 ADO.NET中,数据集的Schema(结构定义)用什么来描述?
A. SQL语句
●B. XML
C. 为达到最高的效率而设计的二进制标准
 
2.6 ASP.NET支持哪种会话状态保存的方式:
A. 服务器进程内
B. 状态服务(State Service)
C. SQL 服务器
●D. 以上都是
 
 
3 风险
 
3.1 A类题
 
3.1.1 下列哪种语言不是面向对象的?
A. C#
●B. VB
C. VB.NET
D. C++
 
3.1.2 .NET框架不可以运行在什么样的平台上?
A. Windows 2000
B. Windows NT 4.0
C. Windows 98
D. Windows XP
E. Windows 95
 
 
3.1.3 VB.NET 是一种完全面向对象的语言吗?
● A. 是 ○ B. 不是
 
3.1.4 用户可以在.NET环境中使用Java语言吗?
● A. 可以 ○ B. 不可以
 
3.1.5 ASP和ASP.NET应用程序可以同时在同一个Web Server上运行,并不相互影响。这种说法:
●A. 正确
B. 错误
 
3.1.6 在.NET应用中,如果开发时分配了内存却不小心忘了及时释放,会造成内存不足吗?
A. 会
●B. 不会
 
3.2 B类题
 
3.3 对于发布.NET应用,那个说法正确?
A. 只能使用文件复制发布
B. 只能使用Windows Installer
C. 只能使用打包和发布向导
●D. 以上方法都可以
 
3.3.1 关于C#语言的描述,下列哪项是不正确的?
A. 和Java一样,都起源于C++语言
B. 和Java都已经提交给ECMA国际标准组织。
●C. 它支持C++所不支持的接口(Interface)
D. 它支持自动垃圾回收
 
3.3.2 下面哪一条有关ASP.NET是错误的?
●A. 比ASP需要更多代码
B. 是编译执行的
C. 服务器端控件可以减小客户端编程工作量
D. 编译后的页可以被缓存起来提高性能
 
3.3.3 真正实现跨平台集成的技术是什么?
A. HTML。
B. Java。
C. DCOM。
●D. XML web service。
 
3.3.4 微软.NET框架快速开发的原因是什么?
A. 丰富的类库
B. 统一的编程模型
C. 优秀的集成环境
●D. 以上都是
 
3.3.5 下列哪条不包括在.NET框架中?
A. ASP.NET
●B. MFC
C. ADO.NET
D. Windows 表单
 
 
3.4 C类题
3.4.1 关于VC++.NET的管理扩展,下面哪个说法不正确?
A. 它默认情况下不被安装
B. 它可以将现有的代码直接移植到.NET
C. 它可以完成所有C#能做到的
D. 它完全支持.NET框架
 
3.4.2 VS.NET支持VB6的升级,不正确的说法是哪个?
A. VS.NET提供该升级向导
B. VB表单和用户控件被升级到Windows表单
C. ADO数据绑定可升级到ADO.NET
D. ActiveX文档, DHTML页面被升级
 
 
13. ADO.NET数据集在那里创建数据缓冲?
A. 数据库服务器内存
●B. Web服务器内存
C. 客户端内存
 
 
3.4.3 下面哪种特性VB.NET中没有提供?
A. 类的继承
B. 指针
C. Delegate
D. Attributes
 
11. 在C#中,怎样决定一个对象的类型?
A. 使用is操作符
B. 使用typeof操作符
C. 使用GetType方法
 
3.4.4 在一个过程里面发生了意外(Exception),而该过程里没有设置如何处理它,那么会发生什么情况?
A. 产生错误。
B. 该应用程序被终止。
C. 显示错误信息。
●D. 该意外传回调用者或者前一个过程
 
 
备份题(如果出现相同的最高分)
 
3.5 当你升级一个Visual Basic 6.0的应用程序时,变体数据类型会被转换成:
A. 整型
B. 字节型
●C. 对象类型
D. 字符串类型
 
 
一个名字空间可以分布在多少个装配件里面?
A. 无
B. 一个
C. 两个
●D. 可以按需要任意多个。
 
5. 为了使用全局装配件缓冲,装配件必须有:
●A 强命名
B 弱命名
C 都可以
 
6. 我们可以使用那个命令行工具从全局装配件缓冲中安装或删除装配件?
●A. gacutil.exe
B. pview.exe
C. al.exe
D. csc.exe
 
 
7. .NET中下列什么工具可以用来察看策略信息?
A 代码访问安全工具( Caspol.exe)
B 权限查看工具(permview.exe)
C 都可以
 
 
 
11. 12. 在ADO.NET中,数据关联类说明了在同一个数据集里的两张数据表中的一列或多列之间的关系。这种说法:
A. 正确
●B. 错误
 
13. 非连接数据访问模式比连接数据访问模式更适合于那些需要高可扩展性的应用程序。这种说法:
●A. 正确
B. 错误
 
16. 事务的启动或终止可以使用下面那种对象:
A. 事务对象
B. 连接对象
C. 命令对象
 
 
15. 数据适配器能被用来基于SQL join操作更新数据表中的数据,这种说法:
A. 正确
●B. 错误
 
没事自已检查一下自已,答案仅供参考
 
一、选择填空题(每空2分,共60分)
1.在对SQL Server 数据库操作时应选用()。
a)SQL Server .NET Framework 数据提供程序;
b)OLE DB .NET Framework 数据提供程序;
c)ODBC .NET Framework 数据提供程序;
d)Oracle .NET Framework数据提供程序;
2.下列选项中,()是引用类型。
a)enum类型
b)struct类型
c)string类型
d)int类型
3.关于ASP.NET中的代码隐藏文件的描述正确的是()
a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d)以上都不正确。
4.以下描述错误的是()
a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
5.C#的数据类型有()
a)值类型和调用类型;
b)值类型和引用类型;
c)引用类型和关系类型;
d)关系类型和调用类型;
6.下列描述错误的是()
a)类不可以多重继承而接口可以;
b)抽象类自身可以定义成员而接口不可以;
c)抽象类和接口都不能被实例化;
d)一个类可以有多个基类和多个基接口;
7.在DOM中,装载一个XML文档的方法()
a)save方法
b)load方法
c)loadXML方法
d)send方法
8.下列关于构造函数的描述正确的是()
a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰
c)构造函数必须与类名相同
d)构造函数不能带参数
9.以下是一些C#中的枚举型的定义,其中错误的用法有()
a)public enum var1{ Mike = 100, Nike = 102, Jike }
b)public enum var1{ Mike = 100, Nike, Jike }
c)public enum var1{ Mike=-1 , Nike, Jike }
d)public enum var1{ Mike , Nike , Jike }
10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。
a)9
b)2
c)6
d)越界
11.接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。
a)方法、属性、索引器和事件;
b)方法、属性信息、属性;
c)索引器和字段;
d)事件和字段;
12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是( )
a)HTML控件和Web控件
b)HTML控件和XML控件
c)XML控件和Web控件
d)HTML控件和IIS控件
13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( )
a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>
b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>
c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>
d)以上皆非
14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是()。
a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
c)Select操作的Sql语句只能由ExecuteReader()方法来执行;
d)ExecuteReader()方法返回一个DataReder对象;
15.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。
a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);
d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是()。
a)Buttons属性表示ToolBar控件的所有工具栏按钮
b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键
d)ButtonClick事件在用户单击工具栏任何地方时都会触发
17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和( ),必要时还要设置参数尺寸。
a)大小;
b)上限;
c)初始值;
d)类型;
18.如果将窗体的FormBoderStyle设置为None,则( )。
a)窗体没有边框并不能调整大小;
b)窗体没有边框但能调整大小;
c)窗体有边框但不能调整大小;
d)窗体是透明的;
19.如果要将窗体设置为透明的,则( )
a)要将FormBoderStyle属性设置为None;
b)要将Opacity属性设置为小于100%得值;
c)要将locked 属性设置为True;
d)要将 Enabled属性设置为True;
20.下列关于C#中索引器理解正确的是( )
a)索引器的参数必须是两个或两个以上
b)索引器的参数类型必须是整数型
c)索引器没有名字
d)以上皆非
21.下面描述错误的是( )。
a)窗体也是控件;
b)窗体也是类;
c)控件是从窗体继承来的;
d)窗体的父类是控件类;
22.要对注册表进行操作则必须包含( )。
a)System.ComponentModel命名空间;
b)System.Collections命名空间;
c)System.Threading命名空间;
d)Microsoft.Win32命名空间;
23.要创建多文档应用程序,需要将窗体的( )属性设为true。
a)DrawGrid;
b)ShowInTaskbar;
c)Enabled;
d)IsMdiContainer;
24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。
a)TreeNode;
b)int;
c)string;
d)TreeView;
25.下面关于XML的描述错误的是()。
a)XML提供一种描述结构化数据的方法;
b)XML 是一种简单、与平台无关并被广泛采用的标准;
c)XML文档可承载各种信息;
d)XML只是为了生成结构化文档;
上述答案:
1.在对SQL Server 数据库操作时应选用()
a;
2.下列选项中,()是引用类型。
c)string类型//其构造函数为静态构造函数所以看起来像值类型
 
3.关于ASP.NET中的代码隐藏文件的描述正确的是()
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
 
4.以下描述错误的是()
a)在C++中支持抽象类而在C#中不支持抽象类。
 
5.C#的数据类型有()
a)值类型和调用类型;
 
6.下列描述错误的是()
d)一个类可以有多个基类和多个基接口;
 
7.在DOM中,装载一个XML文档的方法()
 
b)load方法
 
8.下列关于构造函数的描述正确的是()
c)构造函数必须与类名相同
 
9.以下是一些C#中的枚举型的定义,其中错误的用法有()
a)public enum var1{ Mike = 100, Nike = 102, Jike }
b)public enum var1{ Mike = 100, Nike, Jike }
c)public enum var1{ Mike=-1 , Nike, Jike }
d)public enum var1{ Mike , Nike , Jike }
??忘记了
 
10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。
d)越界
 
11.接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。
a)方法、属性、索引器和事件;
 
12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是( )
a)HTML控件和Web控件
 
 
13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( )
a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>
b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>
c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>
d)以上皆非
14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是()。
c)Select操作的Sql语句只能由ExecuteReader()方法来执行;
 
15.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。
 
b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
 
 
16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是()。
a)Buttons属性表示ToolBar控件的所有工具栏按钮
b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键
d)ButtonClick事件在用户单击工具栏任何地方时都会触发
17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和( ),必要时还要设置参数尺寸。
 
b)上限;
 
18.如果将窗体的FormBoderStyle设置为None,则( )。
a)窗体没有边框并不能调整大小;
b)窗体没有边框但能调整大小;
c)窗体有边框但不能调整大小;
d)窗体是透明的;
19.如果要将窗体设置为透明的,则( )
 
b)要将Opacity属性设置为小于100%得值;
 
20.下列关于C#中索引器理解正确的是( )
 
b)索引器的参数类型必须是整数型
 
21.下面描述错误的是( )。
 
c)控件是从窗体继承来的;
 
22.要对注册表进行操作则必须包含( )。
a)System.ComponentModel命名空间;
b)System.Collections命名空间;
c)System.Threading命名空间;
d)Microsoft.Win32命名空间;
23.要创建多文档应用程序,需要将窗体的( )属性设为true。
 
d)IsMdiContainer;
24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。
a)TreeNode;
b)int;
c)string;
d)TreeView;
25.下面关于XML的描述错误的是()。
 
d)XML只是为了生成结构化文档;
 
 
一、.Net Framework部分*
1.装箱、拆箱操作发生在: (    )
A.类与对象之间   B.对象与对象之间
C.引用类型与值类型之间   D.引用类型与引用类型之间
2.用户类若想支持Foreach语句需要实现的接口是: (    )
A.IEnumerableB.IEnumerator
C.ICollectionD.ICollectData
3..Net Framework通过什么与COM组件进行交互操作?(    )
A.Side By SideB.Web Service
C.InteropD.PInvoke
4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?(    )
A.Side By SideB.Interop
C.PInvokeD.COM+
5.装箱与拆箱操作是否是互逆的操作?(    )
A.是B.否
6.以下哪个是可以变长的数组?(    )
A.ArrayB.string[]
C.string[N]D.ArrayList
7.用户自定义异常类需要从以下哪个类继承:(    )
A.ExceptionB.CustomException
C.ApplicationExceptionD.BaseException
8.以下代码段中能否编译通过?请给出理由。
try
{
}
catch(FileNotFoundException e1)
{
}
catch(Exception e2)
{
}
catch(IOException e3)
{
}
catch
{
}
 
 
 
9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) (        )
A.CloseB.DisposeC.Finalize
D.usingE.Quit
10..Net依赖以下哪项技术实现跨语言互用性?(    )
A.CLRB.CTSC.CLSD.CTT
11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)
 
 
 
 
12.以下哪个类是int的基类?(    )
A.Int32B.ObjectC.ValueTypeD.Int16
 
二、C# 部分*
13.以下哪些可以作为接口成员?(多选) (        )
A.方法B.属性C.字段D.事件E.索引器
F.构造函数G.析构函数
14.以下关于ref和out的描述哪些项是正确的?(多选) (        )
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?(     )
A.publicB.protectedC.internalD.protected internal
16.class Class1
{
    private static int count = 0;
    static Class1()
    {
        count++;
    }
    public Class1()
    {
        count++;
    }
}
Class1 o1 = new Class1();
Class1 o2 = new Class1();
请问,o1.Count的值是多少?(    )
A.1B.2C.3D.4
17.abstract class BaseClass
{
    public virtual void MethodA()
    {
    }
    public virtual void MethodB()
    {
    }
}
class Class1: BaseClass
{
    public void MethodA(string arg)
    {
    }
    public override void MethodB()
    {
    }
}
class Class2: Class1
{
    new public void MethodB()
    {
    }
}
class MainClass
{
    public static void Main(string[] args)
    {
        Class2 o = new Class2();
        Console.WriteLine(o.MethodA());
    }
}
请问,o.MethodA调用的是: (    )
A.BaseClass.MethodAB.Class2.MethodA
C.Class1.MethodAD.都不是
18.请叙述属性与索引器的区别。
 
 
 
 
 
19.请叙述const与readonly的区别。
 
 
 
 
20.请叙述类与结构的区别。
 
 
 
 
 
 
三、ASP.NET & ADO.NET部分*
21.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。
所有的用户都存在于AllWin这个域中。
您想要使用下列认证规则来配置这个应用程序:
• 匿名用户不允许访问这个应用程序。
• 所有雇员除了Tess和King都允许访问这个应用程序。
请问您应该使用以下哪一个代码段来配置这个应用程序?(    )
A. <authorization>
<deny users=”allwin\tess, allwin\king”>
<allow users=”*”>
<deny users=”?”>
</authorization>
B. <authorization>
<allow users=”*”>
<deny users=”allwin\tess, allwin\king”>
<deny users=”?”>
</authorization>
C. <authorization>
<deny users=”allwin\tess, allwin\king”>
<deny users=”?”>
<allow users=”*”>
</authorization>
D. <authorization>
<allow users=”allwin\tess, allwin\king”>
<allow users=”*”>
</authorization>
E.<authorization>
<allow users=”*”>
<deny users=”allwin\tess, allwin\king”>
</authorization>
22.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?(    )
A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。
B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。
C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。
D. 重写OnLayout事件,当Grid的Footer行被创建时显示合计数。
23.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)(     )
A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。
E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。
F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。
24.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?(    )
A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;
Integrated Security=SSPI”
B. “Server= AllWin;Data Source=PubBase;Database=Test;
Integrated Security= SSPI”
C. “Data Source= AllWin \PubBase;Initial Category=PubBase;
Integrated Security= SSPI”
D. “Data Source= AllWin \ PubBase;Database=Test;
Integrated Security= SSPI”
25.您为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个
Xml Web Service。这个Xml Web Service将返回一个包含了公司雇员列表的DataSet对象。请问您该如何在这个程序中使用这个Xml Web Service?(    )
A.在“引用”对话框的.Net标签中选择System.Web.Services.dll。
B.在“Web引用”对话框中输入这个XML Web service的地址。
C.在您的Global.asax.cs中添加一条using语句并指定这个XML Web service的地址。
D.在您的Global.asax.cs中写一个事件处理器导入这个Xml Web Service相应的.wsdl和.disco文件。
26.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么做? (    )
A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后将这个DataTable对象绑定到DataGrid控件。
B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。然后将这个DataView对象绑定到DataGrid控件。
C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示ProductName。然后将这个DataTable对象绑定到DataGrid控件。
D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件
四、Xml部分
     <AAA>
          <BBB id = "b1"/>
          <BBB id = "b2"/>
          <BBB name = "bbb"/>
          <BBB/>
          <CCC>
               <DDD>
                    <BBB/>
                    <BBB/>
               </DDD>
          </CCC>     
</AAA>
27.请写出获取上述Xml中全部没有属性的BBB元素的XPath。
 
 
 
28.请写出获取上述Xml中所有含有2个子节点的元素的XPath。
 
 
 
 
五、Javascript & DHtml部分*
<HTML>
<HEAD>
<TITLE>登录</TITLE>
<Script Language=”javascript”>
function CheckFom()
{}
</Script>
</HEAD>
<form Method="POST" >
用户名:<input name="user_name" >
密 码:<input name="password" >
<input type=button value="提交" onclick= CheckFom ()>
</form>
</HTML>
29.请完成上面脚本区中的CheckForm函数。要求用户名、密码框不允许为空。
 
 
 
 
 
30.您需要动态创建一个文本框,并且当此文本框获得焦点后弹出对话框,提示“Ok”。
 
 
 
 
 
 
 
 
六、逻辑推理部分*
31.一人拿一张百元钞票到商店买了25元的东西,店主由于手头没有零钱,便拿这张百元钞票到隔壁的小摊贩那里换了100元零钱,并找回了那人75元钱。那人拿着25元的东西和75元零钱走了。过了一会儿,隔壁小摊贩找到店主,说刚才店主拿来换零的百元钞票为假币。店主仔细一看,果然是假钞。店主只好又找了一张真的百元钞票给小摊贩。
 
问:在整个过程中,店主一共亏了多少钱财?(不计商品利润)
 
76.C#代码实现,确保windows程序只有一个实例(instance)
 
        ///<summary>
        ///应用程序的主入口点。
        ///</summary>
        [STAThread]
        static void Main()
        {
            //防止程序多次运行
            if(!OneInstance.IsFirst("GetPayInfo"))
            {
                MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
                return;
            }
            Application.Run(new Form1());
        }
        // ******************* 防止程序多次执行 **************************
        public abstract class OneInstance
        {
            ///<summary>
            ///判断程序是否正在运行
            ///</summary>
            ///<param name="appId">程序名称</param>
            ///<returns>如果程序是第一次运行返回True,否则返回False</returns>
            public static bool IsFirst(string appId)
            {
                bool ret=false;
                if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
                {
                    CreateMutex(IntPtr.Zero,0,appId);
                    ret=true;
                }
                return ret;
            }
 
            [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
            private static extern IntPtr OpenMutex(
                uint dwDesiredAccess, // access
                int bInheritHandle,    // inheritance option
                string lpName          // object name
                );
 
            [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
            private static extern IntPtr CreateMutex(
                IntPtr lpMutexAttributes, // SD
                int bInitialOwner,                       // initial owner
                string lpName                            // object name
                );
        }