1.在下面的例子里
     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的实例时,产生什么输出?
2.下面的例子中     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);
           }
       }
产生的输出结果是什么?
3.对于这样的一个枚举类型:
      enum Color:byte{
          Red,
          Green,
          Blue,
          Orange
       }
试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。

解决方案 »

  1.   

    4.下面这段代码输出什么?为什么?
         int i=5;
         int j=5;
         if (Object.ReferenceEquals(i,j))
              Console.WriteLine("Equal");
         else
              Console.WriteLine("Not Equal");
      

  2.   

    1. x=1,y=0
    2. x=1,y=2
    3. Red(0),Green,Blue,Orange
    4. Not Equal    引用地址不同
      

  3.   

    1.  x=1,y=0 因为在调用y=-1时,先调用了A的构造函数,所以y默认为0
    2.  x=1,y=2 因为调用A.X时,B.Y=0,所以A.X=1;而调用B.Y时,A.X=1所以B.Y=2
    3.  void EnumColorStructure
       {
    string[] names = Enum.GetNames(typeof(Color));
    Array arr = Enum.GetValues(typeof(Color));
    for(int i=0;i<names.Length;i++)
    {
         Console.WriteLine("名称:{0} 值:{1:d}",names[i],arr.GetValue(i));
    }
    Console.ReadLine();
        }
    4.  Not Equal 因为对于值类型,调用Object.ReferenceEquals()始终返回false
      

  4.   

    1.实例化B时,会现调用其父类得实例化构造函数。此时X=1,y=0
    2.类型构造函数