zoukankan      html  css  js  c++  java
  • 2011/5/5 最近碰到的几道面试题

    1.

    public class A
    {
        public A()
        {
            PrintFields();
        }
        public virtual void PrintFields() { }
    }


    public class B : A
    {
        int x = 1;
        int y;
        public B()
        {
            y = -1;
        }
        public override void PrintFields()
        {
            Console.WriteLine("x={0},y={1}", x, y);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            Console.ReadKey();
        }
    }

    答案为:x=1,y=0

    2.

    public class A
    {
        public static int Count;
        static A()
        {
            Count++;
        }
        public A()
        {
            Count++;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            A a1 = new A();
            A a2 = new A();
            Console.WriteLine(A.Count);
            Console.ReadKey();
        }
    }

    答案:3

    3.

    public class A
    {
        public static int X;
        static A()
        {
            X = B.Y + 1;
        }
    }
    public class B
    {
        public static int Y = A.X + 1;
        static B() { }
        static void Main()
        {
            Console.WriteLine("X={0},Y={1}", A.X, B.Y);
            Console.ReadKey();
        }
    }

    答案:x=1,y=2

    注:因为Main函数在B中,所以程序的初始化会从B开始,当在public static int Y = A.X + 1;时,会执行A的构造函数,所以X=1,Y=2

        如何把Main函数放到A类中,程序运行时会从A开始,因此X=2,Y=1

  • 相关阅读:
    自我介绍
    constructor
    arrow function、function.apply
    for each...in
    类与对象与结构体的区别
    编程语言的发展史
    正则表达式中pw、IDCard和EM匹配
    正则表达式速记
    js中用户名的正则(字符,数字,下划线,减号)
    DOM与document的区别
  • 原文地址:https://www.cnblogs.com/wangshuai/p/2038366.html
Copyright © 2011-2022 走看看