C#面试题——附答案
下午随便在几个网站上转了转,发现了些C#的面试题,以csdn的一篇帖子收集最全,但是,没有答案,就自己做了一下,发上来,后续一些关于概念机制的题目,我继续做,先发点程序的,都是通过了编译并运行的,但理解上难免还有不到位之处,欢迎指正。
1、以下代码能否通过编译?如果不能,请改成正确代码,并说明原因。
<html> <% int subtract(int num1, int num2) { return num1-num2; } %> <body> <% int number = 100; while (number > 0) { Response.Write("value: " + number + "<br/>"); number = subtract(number, 1); } %> </body> </html> 未通过编译:CS1519: 类、结构或接口成员声明中的标记“while”无效——为什么是这个 错误呢?不清楚了。 本文出自 51CTO.COM技术博客改正:将subtract放在<script runat="server"></script>之间。 <script runat="server"> int subtract(int num1, int num2) { return num1 - num2; } </script> 2、float f=-123.567F; int i=(int)f; i的值现在是_____? 答案:-123 (float f=123.567F时,是123) 3、下面的代码中有什么错误吗?_______ using System; class A { public virtual void F(){ Console.WriteLine("A.F"); } } abstract class B:A { public abstract override void F(); } ——编译通过 4、当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_____(可以 or 不可以)从T派生出新的类,____(可以 or 不可以)直接创建T的任何实例。(答案:均受保护级别限制,不可以) 5、下面这段代码有错误么? switch (i){ case(): CaseZero(); break; case 1: CaseOne(); break; case 2: default: CaseTwo(); break; } ——原题目的default那行是:“dufault;”,我想应该是笔误吧,改为default:后无错,当i为2和其他值时,执行CaseTwo()。 6、在下面的例子里 using System; class A { public A(){ PrintFields(); } public virtual void PrintFields(){} } class B:A { int x=1; int y; public B(){ y=-1; } public override void PrintFields(){ Console.WriteLine("x={0},y={1}",x,y); } 当使用new B()创建B的实例时,产生什么输出? 答案:输出为x=1,y=0(继承的子类在new时,先new父类对象,然后new自身私有成员,当调用b.PrintFields()时,则输出x=1,y=-1) 7、下面的例子中 using System; class A { public static int X; static A(){ X=B.Y+1; } } class B { public static int Y=A.X+1; static B(){} static void Main(){ Console.WriteLine("X={0},Y={1}",A.X,B.Y); } } 产生的输出结果是什么? X=1,Y=2 8、下面这段代码输出什么?为什么? int i=5; int j=5; if (Object.ReferenceEquals(i,j)) Console.WriteLine("Equal"); else Console.WriteLine("Not Equal"); 答案:Not Equal——进行了装箱操作。 |



august
博客统计信息
热门文章
最新评论
友情链接
