• C# 静态变量、静态函数、实体变量、实体函数在一个类中的执行顺序


    为了弄清这个代码,写了个测试,但是测试的结果和往上的代码有所差别,仁者见仁,智者见智了。如果我的测试用例用问题,欢迎指出。

    首先,方法的是在被调用时执行,但是静态方法在所有地方都可以调用,应该在很早的时候就被编译了。这个测试依赖静态方法来输出顺序。

        public class WhenCodeThread : ITestSample
        {
            public class Test : TestBase
            {
                 int instanceParam2 = staticFunction("子类实体变量");
                 static int staticParam2 = staticFunction("子类静态变量");
                static Test()
                {
                    Console.WriteLine("-- 子类静态构造函数被执行 --");
                }
    
                public Test()
                {
                    Console.WriteLine("-- 子类实体构造函数被执行 --");
                }
            }
            public class TestBase
            {
                int instanceParam = staticFunction("基类实体变量");
                static int staticParam = staticFunction("基类静态变量");
                static TestBase()
                {
                    Console.WriteLine("-- 基类静态构造函数被执行 --");
                }
    
                public TestBase()
                {
                    Console.WriteLine("-- 基类实体构造函数被执行 --");
                }
    
                protected static int staticFunction(string name)
                {
                    Console.WriteLine($"-- {name}被执行 --");
                    return 1;
                }
    
            }
    
            public event Action TestCompleted;
            public void StartTest()
            {
                Console.WriteLine("-- 第一次实例化类 --");
                new Test();
    
                Console.WriteLine("-- 第二次实例化类 --");
                new Test();
            }
    
        }

    控制台调用 StartTest() 可以看到结果

  • 相关阅读:
    Allegro转换PADS终极篇.....
    PNP与NPN三极管
    windows无法设置防火墙
    SourceInsight 不断无响应的有关问题
    看片/复制/下载技巧
    WinRAR 5.01 正式版 (简体中文)附注册机及注册码
    JVM 学习笔记 1. JVM 运行模型
    Core Java笔记 9.集合(I)
    Core Java笔记 8.泛型(II)
    Core Java笔记 7.泛型(I)
  • 原文地址:https://www.cnblogs.com/tanl/p/12765754.html
Copyright © 2020-2023  润新知