1. 程式人生 > >C#面試題——附答案

C#面試題——附答案

                    錯誤呢?不清楚了。
改正:將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——進行了裝箱操作。