DOTNET试题(C#基础参考答案)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.public static const int A=1;这段代码有错误么?是什么? static 和 const 不能同时修饰一个变量。
简答题(每个 2 分,共 62 分)
1.什么叫应用程序域?什么是强类型系统?什么是重载?CTS、 CLS 和 CLR 分别作何解释? 答:应用程序域: 操作系统和运行库环境通常会在应用程序间提供某种形式的隔离。例如,
10.用 sealed 修饰的类有什么特点? 这样的类不能被继承。
11.在 c#中 using 和 new 这两个关键字有什么意义,请写出你所知道的意义?using 指令 和 语句 new 创建实例 new 隐藏基类中方法。 Using 指令可以在变量超出作用域时,即使出现异常,也会自动调用其 Dispose()方法。 new 创建实例 new 隐藏基类中方法。 例子: Using(AA newAA=new AA()){….} Public BB { Public void DoSomething(){…} } Public AA:BB { Public new void DoSomething(){…}
5、请指出 C#中是否有下列关键字? 答案:virtual、sealed、abstract、import、as、in、goto、final、Const、signed、String(提示, 仅指出 C#中没有的即可) 。 C#中没有的有:import,final,signed 6、在循环:for( int i = 0; i < 100; i++ ) Console.WriteLine( i );中,请指出 i++的执行时机。 i++的执行时机为:当输出 i 的值后。 7、试说明 continue 关键字的用处。 continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代。 比如:for( int i=1;i<=10;i++)
} } public class B : A { public B() { Console.WriteLine('B'); } public new void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new B(); a.Fun(); Console.ReadLine(); } } }
2.下面的代码中有什么错误吗? using System; class A { public virtual void F(){ Console.WriteLine("A.F"); } } abstract class B:A { public abstract override void F();//重写基类的方法,应该用 override 或是 new } // new public abstract void F(); 解析如下:就针对代码而言没有什么错误,但是一个抽象类,派生于一个非抽象类, 这听起来就有点不习惯,在抽象类中,可以有抽象方法,也可以有非抽象方法,对于抽象方 法而言,本身没有具体的实现代码,有的只是签名而已,因为抽象类本就是用来被派生的, 而不是派生于别的类。 而且抽象类不能被实例化, 所以上面的类 B, 就其应用而言是个废类, 没有用处。
单选题(每个 2 分,共 10 分)
一、运行下面程序
using System; namespace test { abstract class BaseClass { public virtual void MethodA() { Console.WriteLine("BaseClass"); } public virtual void MethodB() { } } class Class1 : BaseClass { public void MethodA() { Console.WriteLine("Class1"); } public override void MethodB() { } } class Class2 : Class1 { new public void MethodB() { } } class MainClass { public static void Main(string[] args) { Class2 o = new Class2(); o.MethodA(); } }
指错题(每个 2 分,共 6 分)
1.下面这段代码有两处错误,请指出。 switch (i){
case(): //这个地方必须有一个整数或是枚举值 CaseZero(); break; case 1: CaseOne(); break; case 2: dufault; //对于 default 而言,写法应该是这样的 default: CaseTwo(); break; }
Microsoft Windows 使用进程来隔离应用程序。 为确保在一个应用程序中运行的代码不会对其他 不相关的应用程序产生不良影响,这种隔离是必需的。应用程序域为安全性、可靠性、版本控制 以及卸载程序集提供了隔离边界。 应用程序域通常由运行库宿主创建, 运行库宿主负责在运行应 用程序之前引导公共语言运行库。
3.什么是受管制的代码?
答案:托管代码:使用基于公共语言运行库的语言编译器开发的代码称为托管代码。
4.值类型和引用类型的区别?写出 C#的样例代码。 对于值类型,变量直接保存其数据,而对于引用类型,栈变量仅保存地址,对应的数据可以在该 地址中找到。 值类型:int a=100; 引用类型:Class AA{} AA newAA=new AA();
wk.baidu.com
2.什么是装箱和拆箱?
答案:装箱和拆箱:装箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储到堆中。拆箱将从对象从堆中转换为栈值类型。 重载:成员的签名包含成员的名称和参数列表。每个成员签名在类型中必须是唯一的。只要成员 的参数列表不同,成员的名称可以相同。如果类型的两个或多个成员是同类成员(方法、属性、 构造函数等) ,它们具有相同的名称和不同的参数列表,则称该同类成员进行了重载。
{ if(i<9) continue; Console.WriteLine(i); } 在这段代码中将输出 9 和 10,因为凡是小于 9 的都会进行直接进行下一次迭代。
8.c#中的三元运算符是? int a=(b>100?b-100:b); 9,&和&&的区别。 &是位运算符。 &&是布尔运算符。 &也可以用于逻辑运算,但是效率没有&&高
3. string receive(int x) 4. 不确定的 答案是是 2
分析如下:委托的原型为 public delegate int myCallBack(int x);则表示回调方法的返回类 型应该是 int 型的,还应带有一个 int 型的参数,根据这个分析,只有 int receive(int num) 这个原型最符合。
托管代码:使用基于公共语言运行库的语言编译器开发的代码称为托管代码。 强类型系统: 所有的变量都清晰地标记为属于某个特定的数据类型, 不允许对模糊的数据类 型执行任何操作。 装箱和拆箱:装箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类 型的一个实例中。这使得值类型可以存储到堆中。拆箱将从对象从堆中转换为栈值类型。 重载:成员的签名包含成员的名称和参数列表。每个成员签名在类型中必须是唯一的。只要成员 的参数列表不同,成员的名称可以相同。如果类型的两个或多个成员是同类成员(方法、属性、 构造函数等) ,它们具有相同的名称和不同的参数列表,则称该同类成员进行了重载。 CTS:通用类型系统,common type system CLS:通用语言规范 common language specification CLR:通用语言运行时 common language runtime
1. A B A.Fun() 2. A B B.Fun() 3. B A A.Fun() 4. B A B.Fun() 这个题的结果是 A B A.Fun(),原因如下:B 继承于 A,所以这行语句“A a = new B();”表 示将子类转换为基类,会先执行基类的构造函数,即 A 类的构造函数,再执行 B 的构造函 数,这样会先打印“A” ,再输出“B” ,然后执行这条语句:a.Fun();,因为 B 里面的改写 的方法 Fun(),是用 NEW 作标记的,这样的在调用的时候,会调用其基类的 Fun(),输出 “A.Fun()”。
4.委托声明的关键字是___delegate___? 5.在.Net 托管代码中我们不用担心内存漏洞,这是因为有了___垃圾收集器___? 6.当类 T 只声明了私有实例构造函数时, 则在 T 的程序文本外部, _不可以__(可以 or 不 可以)从 T 派生出新的类,_不可以___(可以 or 不可以)直接创建 T 的任何实例。 7.能用 foreach 遍历访问的对象需要实现 _____IEnumerable___________接口。
三、如下程序的运行结果是:
using System; namespace test { public abstract class A { public A() { Console.WriteLine('A'); } public virtual void Fun() { Console.WriteLine("A.Fun()");
}
请问,此程序输出结果是: 1. BaseClass 2. BassClass Class1 3. Class1 4. Class1 BassClass 这个程序的运行结果是“Class1” ,原因如下:o 为 class2 的实例对象,调用的是 methodA() 这个方法,而这个方法在 class2 的类体里面没有重写,所以会执行其基类 class1 里面的 methodA()方法,输出“Class1” 。 二、运行下面程序 public static void Main(string[] args) { int i = 2000; object o = i; i = 2001; int j =(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 这个题的运行结果为:i=2001,o=2000,j=2000,原因如下:i 的初值为 2000,然后将 i 进行装 箱操作,这个 o 的值为 2000,再将 i 重新赋值为 2001,再进行拆箱操作,这样 j 的值为 2000, 所以最后 i=2001,o=2000,j=2000
四、 Which of these string definitions will prevent escaping on backslashes in C#?* 1. string s = #”\n Test string”; 2. string s = “’\n Test string”; 3. string s = @”\n Test string”; 4. string s = “\n Test string”; 答案是 3 ,任何字符串前加@符号都表示里面内容原样输出,不转义。 五、 声明一个委托 public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型 应该是 1. void myCallBack(int x) 2. int receive(int num)
填空题(每个空 1 分,共 10 分)
1.float f=-123.567F; int i=(int)f;i 的值现在是_-123____? 2.面向对象的语言具有__继承______性、___封装______性、___多态_____性
3.类成员有_____种可访问形式?
this.;new Class().Method;静态
相关文档
最新文档