ASP.NET学习社区

首页 » ASP.NET学习区 » 职业相关 » C#面试题——附答案
学习 - 2008-3-16 9:19:00
本答案 仅供参考


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——进行了装箱操作。
1
查看完整版本: C#面试题——附答案