zoukankan      html  css  js  c++  java
  • 一道关于实例化顺序的C#面试题

    转自http://kb.cnblogs.com/page/104476/

     1 public class BaseA
     2 {
     3     public static MyTest a1 = new MyTest("a1");
     4     public MyTest a2 = new MyTest("a2");
     5     static BaseA()
     6     {
     7         MyTest a3 = new MyTest("a3");
     8     }
     9     public BaseA()
    10     {
    11         MyTest a4 = new MyTest("a4");
    12     }
    13     public virtual void MyFun()
    14     {
    15         MyTest a5 = new MyTest("a5");
    16     }
    17 }
    18 public class BaseB : BaseA
    19 {
    20     public static MyTest b1 = new MyTest("b1");
    21     public MyTest b2 = new MyTest("b2");
    22     static BaseB()
    23     {
    24         MyTest b3 = new MyTest("b3");
    25     }
    26     public BaseB()
    27     {
    28         MyTest b4 = new MyTest("b4");
    29     }
    30     public new void MyFun()
    31     {
    32         MyTest b5 = new MyTest("b5");
    33     }
    34 }
    35 static class Program
    36 {
    37     static void Main()
    38     {
    39         BaseB baseb = new BaseB();
    40         baseb.MyFun();
    41     }
    42 }
    43 public class MyTest
    44 {
    45     public MyTest(string info)
    46     {
    47         Console.WriteLine(info);
    48     }
    49 }

      最后的问题是:请写出Main()方法中,a1-a5,b1-b5这十个类实例化的顺序。(MyTest类是我自己添的,方便查看结果,原题是是实例化一个object类。)

    这个答对了。

    C#里没有接触,倒是在JAVA里看过

    类的加载及初始化

    静态构造块(静态属性,主要功能是为类的对象共享),静态构造函数(静态构造函数只在类对象第一次创建实例时执行,多是为静态属性赋初值),构造块,构造函数

    所以上面的答案是 

    1      b1 B类的 静态构造块
    2  b3 B类的 静态构造方法
    3  b2 B类的 构造块
    4  a1 A类的 静态构造块,这里是执行B类的构造方法,我们知道,要先执行父类的初始化,再执行本类的构造方法,4-7是A类的初始化。
    5  a3 A类的 静态构造方法
    6  a2 A类的 构造块
    7  a4 A类的 构造方法
    8  b4 B类的 构造方法
    9  b5 B类的 Myfun方法。

    这里有个无关的小知识点。
     public new void MyFun()
    new 修饰符
    在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员
  • 相关阅读:
    蓄水池抽样(Reservoir Sampling )
    动态申请一个二维数组
    最大子段和问题分析和总结
    正则表达式语法
    正则表达式介绍
    小刘同学的第七十六篇博文
    小刘同学的第七十五篇博文
    小刘同学的第七十四篇博文
    小刘同学的第七十三篇博文
    小刘同学的第七十二篇博文
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/3138541.html
Copyright © 2011-2022 走看看