下面几个例子考考大家来看看输出什么结果

这几个是考察个人逻辑思维的,所以希望大家不要再电脑上敲,直接用大脑思考!

第一个例子:

class A

{

  public static int x =3;

  static A()

  {

    x = B.y +1;

  }

}

class B

{

  public static int y = A.x +1;

  static B()

  {

    y=1;

  }

  public static void Main()

  {

    Console.WriteLine("{0},{1}",A.x,B.y);

    Console.Read();

  }

}

第二个例子:

class A

{

  private string str = "class A str";

  private int i =0 ;

  static void StringConvert(string str)

  {

    str = "string being converted";

  }

  static void StringConvert(A a)

  {

    a.str = "stirng be converted";

  }

  static void Add(int i)

  {

    i ++;

  }

  static void AddWithRef(ref int i)

  {

    i ++;

  }

  static void Main()

  {

    int i1 = 10;

    int i2 = 20;

    string str = "str";

    A a = new A();

    Add(i1);

    AddWithRef(ref i2);

    Add(c.i);

    StringConvert(str);  

    StringConvert(a);

    Console.WriteLine(i1);

    Console.WriteLine(i2);

    Console.WriteLine(a.i);

    Console.WriteLine(str);

    Console.WriteLine(a.str);

    Console.Read();

  }

}

第三个例子:

public abstract class A

{

  public A()

  {

    Console.WriteLine("A");

  }

  public virtual void Fun()

  {

    Console.WriteLine("A.Fun()");

  }

}

public class B : A

{

  public B()

  {

    Console.WriteLine("B");

  }

  public new void Fun()

  {

    Console.WriteLine("B.Fun()");

  }

  public static void Main()

  {

    A a = new B();

    a.Fun();

    Console.Read();

  }

}

第四个例子:

public class A

{

  public virtual void Fun1(int i)

  {

    Console.WriteLine(i);

  }

  public void Fun2(A a)

  {

    a.Fun1(1);

    Fun1(5);

  }

}

public class B

{

  public override void Fun1(int i)

  {

    base.Fun1(i +1);

  }

  public static void Main()  

  {

    B b = new B();

    A a = new A ();

    a.Fun2(b);

    b.Fun2(a);

  }

}

原文地址:https://www.cnblogs.com/jasonjiang/p/1765643.html