DotNet题库c#基础.docx

上传人:b****5 文档编号:26447395 上传时间:2023-06-19 格式:DOCX 页数:24 大小:27.52KB
下载 相关 举报
DotNet题库c#基础.docx_第1页
第1页 / 共24页
DotNet题库c#基础.docx_第2页
第2页 / 共24页
DotNet题库c#基础.docx_第3页
第3页 / 共24页
DotNet题库c#基础.docx_第4页
第4页 / 共24页
DotNet题库c#基础.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

DotNet题库c#基础.docx

《DotNet题库c#基础.docx》由会员分享,可在线阅读,更多相关《DotNet题库c#基础.docx(24页珍藏版)》请在冰豆网上搜索。

DotNet题库c#基础.docx

DotNet题库c#基础

单选题1

填空题5

指错题7

概述部分8

基础语法9

面向对象11

字符串与正则表达式14

错误与异常15

集合15

内存管理与指针16

反射16

线程17

文件18

本地化18

单选题

一、运行下面程序

usingSystem;

namespacetest

{

abstractclassBaseClass

{

publicvirtualvoidMethodA()

{

Console.WriteLine("BaseClass");

}

publicvirtualvoidMethodB()

{

}

}

classClass1:

BaseClass

{

publicvoidMethodA()

{

Console.WriteLine("Class1");

}

publicoverridevoidMethodB()

{

}

}

classClass2:

Class1

{

newpublicvoidMethodB()

{

}

}

classMainClass

{

publicstaticvoidMain(string[]args)

{

Class2o=newClass2();

o.MethodA();

}

}

}

请问,此程序输出结果是:

1.BaseClass

2.BassClassClass1

3.Class1

4.Class1BassClass

答案:

3。

二、运行下面程序

publicstaticvoidMain(string[]args)

{

inti=2000;

objecto=i;

i=2001;

intj=(int)o;

Console.WriteLine("i={0},o={1},j={2}",i,o,j);

}

请问,程序输出结果:

1.i=2001,o=2000,j=2000

2.i=2001,o=2001,,j=2001

3.i=2000,o=2001,,j=2000

4.i=2001,o=2000,j=2001

答案:

1。

三、如下程序的运行结果是:

usingSystem;

namespacetest

{

publicabstractclassA

{

publicA()

{

Console.WriteLine('A');

}

publicvirtualvoidFun()

{

Console.WriteLine("A.Fun()");

}

}

publicclassB:

A

{

publicB()

{

Console.WriteLine('B');

}

publicnewvoidFun()

{

Console.WriteLine("B.Fun()");

}

publicstaticvoidMain()

{

Aa=newB();

a.Fun();

Console.ReadLine();

}

}

}

1.ABA.Fun()

2.ABB.Fun()

3.BAA.Fun()

4.BAB.Fun()

答案:

1。

四、WhichofthesestringdefinitionswillpreventescapingonbackslashesinC#?

*

   1.strings=#”nTeststring”;

   2.strings=“’nTeststring”;

   3.strings=@”nTeststring”;

   4.strings=“nTeststring”;

答案:

3。

五、

  int[][]myArray3=newint[3][]{newint[3]{5,6,2},newint[5]{6,9,7,8,3},newint[2]{3,2}};myArray3[2][2]的值是()。

  1.9

  2.2

  3.6

4.越界

答案:

D

六、运行下列程序

usingSystem;

namespacetest

{

publicclassB

{

publicstaticvoidMain()

{

Class1o1=newClass1();

Class1o2=newClass1();

Console.WriteLine(Class1.Count);

Console.ReadLine();

}

}

classClass1

{

publicstaticintCount=0;

staticClass1()

{

Count++;

}

publicClass1()

{

Count++;

}

}

}

请问,Class1.Count的值是多少?

()

1.1

2.2

3.3

4.4

答案:

3。

 

七、以下描述错误的是()

  1.在C++中支持抽象类而在C#中不支持抽象类。

  2.C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

  3.在C#中可使用new修饰符显式隐藏从基类继承的成员。

4.在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

答案:

1

八、声明一个委托publicdelegateintmyCallBack(intx);则用该委托产生的回调方法的原型应该是

  1.voidmyCallBack(intx)

  2.intreceive(intnum)

  3.stringreceive(intx)

  4.不确定的

答案:

2。

填空题

1.floatf=-123.567F;inti=(int)f;i的值现在是_____?

答:

-123。

2.面向对象的语言具有________性、_________性、________性

答:

封装、继承、多态。

3.类成员有_____种可访问形式?

答:

this.;newClass().Method;

4.委托声明的关键字是______?

答:

delegate.

5.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?

答:

GC。

6.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___(可以or不可以)从T派生出新的类,____(可以or不可以)直接创建T的任何实例。

答:

不可以,不可以。

7.能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。

答:

IEnumerable、GetEnumerator。

8.在.Net中所有可序列化的类都被标记为_____?

答:

[serializable]

9、在下面的例子里

    usingSystem;

    classA

    {

         publicA()

          {

               PrintFields();

          }

         publicvirtualvoidPrintFields(){}

     }

     classB:

A

     {

          intx=1;

          inty;

          publicB()

   {

              y=-1;

          }

          publicoverridevoidPrintFields()

          {

              Console.WriteLine("x={0},y={1}",x,y);

          }

}

当使用newB()创建B的实例时,产生什么输出___X=1,Y=0;____

10、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:

namespacetest

{

publicdelegatevoidOnDBOperate();

publicclassUserControlBase:

System.Windows.Forms.UserControl

{

publiceventOnDBOperateOnNew;

privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)

{

if(e.Button.Equals(BtnNew))

{

//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。

__________________________________________________

}

}

}

答:

if(OnNew!

=null)

   OnNew(this,e);

11.下面的例子中

    usingSystem;

    classA

    {

         publicstaticintX;

         staticA(){

              X=B.Y+1;

         }

     }

     classB

     {

          publicstaticintY=A.X+1;

          staticB(){}

          staticvoidMain(){

               Console.WriteLine("X={0},Y={1}",A.X,B.Y);

          }

      }

产生的输出结果是x=1,y=2。

指错题

1.下面这段代码有两处错误,请指出。

   switch(i){

   case():

       答:

//case()条件不能为空

       CaseZero();

       break;

   case1:

       CaseOne();

       break;

   case2:

       dufault;  答:

//wrong,格式不正确

       CaseTwo();

       break;

  }

2.下面的代码中有什么错误吗?

    usingSystem;

    classA

    {

         publicvirtualvoidF(){

             Console.WriteLine("A.F");

          }

     }

     abstractclassB:

A

      {

          publicabstractoverridevoidF(); 

答:

abstractoverride是不可以一起修饰.

      }                                          

//newpublicabstractvoidF();

3.publicstaticconstintA=1;这段代码有错误么?

是什么?

答:

const不能用static修饰。

概述部分

1.什么叫应用程序域?

什么是受管制的代码?

什么是强类型系统?

什么是装箱和拆箱?

什么是重载?

CTS、CLS和CLR分别作何解释?

答:

装箱就是把值类型转成引用类型,从MSIL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.

2.什么叫应用程序域?

答:

应用程序域可以理解为一种轻量级进程。

起到安全的作用。

占用资源小。

3.CTS、CLS、CLR分别作何解释?

答:

CTS:

通用语言系统。

CLS:

通用语言规范。

CLR:

公共语言运行库。

4.什么是装箱和拆箱?

答:

从值类型接口转换到引用类型装箱。

从引用类型转换到值类型拆箱。

5.什么是受管制的代码?

答:

unsafe:

非托管代码。

不经过CLR运行。

6.什么是强类型系统?

答:

RTTI:

类型识别系统。

7.在.net中,配件的意思是?

答:

程序集。

(中间语言,源数据,资源,装配清单)

8.谈谈final,finally,finalize的区别。

答:

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。

因此    一个类不能既被声明为abstract的,又被声明为final的。

将变量或方法声明为final,可以保证它们在使用中    不被改变。

被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。

被声明为    final的方法也同样只能使用,不能重载

finally—再异常处理时提供finally块来执行任何清除操作。

如果抛出一个异常,那么相匹配的catch子句就会    执行,然后控制就会进入finally块(如果有的话)。

finalize—方法名。

Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理    工作。

这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。

它是在Object类中定义的    ,因此所有的类都继承了它。

子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。

finalize()     方法是在垃圾收集器删除对象之前对这个对象调用的。

9.请指出GAC的含义?

答:

全局程序集缓存。

10.当整数a赋值给一个object对象时,整数a将会被?

答:

装箱。

11.用Singleton如何写设计模式

答:

static属性里面new,构造函数private

12.什么是ApplicationPool?

答:

Web应用,类似ThreadPool,提高并发性能。

基础语法

1.值类型和引用类型的区别?

写出C#的样例代码。

答:

值类型存放在堆栈中,引用类型存放在堆中。

值类型引用的是实际的内容,而引用类型引用的是地址。

Structaa{}classaa{}

2、请指出C#中是否有下列关键字?

virtual、sealed、abstract、import、as、in、goto、final、Const、signed、String(提示,仅指出C#中没有的即可)。

答:

没有的关键字:

import、final、Const、signed、String

3、在循环:

for(inti=0;i<100;i++)Console.WriteLine(i);中,请指出i++的执行时机。

答:

i=0;i<100;console.writeline(i);i++;

4、试说明continue关键字的用处。

答:

马上开始下一次循环,忽略循环体余下的语句

5.一列数的规则如下:

1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。

答:

publicclassMainClass

   {

       publicstaticvoidMain()  

       {

           Console.WriteLine(Foo(30));

       }

       publicstaticintFoo(inti)

       {

           if(i<=0)

               return0;

           elseif(i>0&&i<=2)

               return1;

           elsereturnFoo(i-1)+Foo(i-2);

       }

   }

6.请编程实现一个冒泡排序算法?

答:

       int[]array=newint[10];

inttemp=0;

for(inti=0;i

{

for(intj=i+1;j

{

if(array[j]

{

temp=array[i];

array[i]=array[j];

array[j]=temp;

}

}

}

7.求以下表达式的值,写出您想到的一种或几种实现方法:

1-2+3-4+……+m

答:

intNum=Convert.ToInt32(Console.ReadLine());

intSum=0;

for(inti=0;i

{

if((i%2)==1)

{

Sum+=i;

}

else

{

Sum=Sum-i;

}

}

System.Console.WriteLine(Sum.ToString());

System.Console.ReadLine();

8.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

答:

switch(expr1)中,expr1是一个整数表达式。

因此传递给switch和case语句的参数应该是int、short、char或者byte。

long,string都不能作用于swtich。

9.shorts1=1;s1=s1+1;有什么错?

shorts1=1;s1+=1;有什么错?

答:

shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。

可修改为s1=(short)(s1+1)。

shorts1=1;s1+=1正确。

10.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

答案:

int[]intArr=newint[100];

ArrayListmyList=newArrayList();

Randomrnd=newRandom();

while(myList.Count<100)

{

intnum=rnd.Next(1,101);

if(!

myList.Contains(num))

myList.Add(num);

}

for(inti=0;i<100;i++)

intArr[i]=(int)myList[i];

11.c#中的三元运算符是?

答:

12.,&和&&的区别。

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

面向对象

1.用sealed修饰的类有什么特点?

答:

sealed修饰符用于防止从所修饰的类派生出其它类。

如果一个密封类被指定为其他类的基类,则会发生编译时错误。

密封类不能同时为抽象类。

sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。

具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

2.什么是虚函数?

什么是抽象函数?

答:

虚函数:

没有实现的,可由子类继承并重写的函数。

抽象函数:

规定其非虚子类必须实现的函数,必须被重写。

3.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?

using指令和语句new创建实例new隐藏基类中方法。

答:

using引入名称空间或者使用非托管资源

   new新建实例或者隐藏父类方法,泛型中的约束。

4.下面这段代码输出什么?

为什么?

inti=5;

intj=5;

if(Object.ReferenceEquals(i,j))

Console.WriteLine("Equal");

else

Console.WriteLine("NotEqual");

答:

不相等,因为比较的是对象

5.类成员有()种可访问形式

答案:

可访问性:

public,protected,private,internal

6.详述.NET里class和struct的异同!

class:

放在堆中struct放在堆栈中

struct值传递,class是引用类型

(1)类和结构都是创建对象的模板。

(2)都可以包含字段和方法。

(3)都需要用new实例化。

(4)类中可以初始化字段值,但是结构中不可以初始化字段值。

(5)结构是值类型,使用结构可以提高性能,类是引用类型

(6)结构不支持继承

(7)类要比结构常用得多。

(8)结构不能有无参构造函数。

7.如何理解委托?

答:

委托类似于C++函数指针,但它是类型安全的。

委托允许将满足签名方式的方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起,多播委托;例如,可以对一个事件调用多个方法。

8.C#中的接口和类有什么异同。

答:

接口类似于一个类模版,定义了方法和属性,接口与类中的抽象函数比较类似。

9、delegate是引用类型还是值类型?

enum、int[]和string呢?

答:

delegate引用类型,enum值类型,int[]引用类型,string引用类型。

10、base这个关键字有哪几种语法?

override呢?

答:

base两个语法,分别是调用基类构造函数和调用基类方法,override用于重写基类方法。

11、object是C#的关键字吗?

请指出C#中有哪些类型关键字,如int、float。

(提示,写得越多越好)。

答:

是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、bool,如回答:

enum、struct、class、delegate

12、简述private、protected、public、internal修饰符的访问权限。

答.private:

  私有成员,在类的内部

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1