您的位置:首页 > 职场人生

C#面试题——附答案

2008-01-29 15:48 141 查看
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”无效——为什么是这个
错误呢?不清楚了。
改正:将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——进行了装箱操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: