qingYun1029 2015-10-16 08:30 采纳率: 100%
浏览 1748
已采纳

多个包含静态变量类的加载顺序???

有三个类,SingletonCounter、Test、Singleton,里面都包含了静态变量,SingletonCounter、Test结构差不多,Singleton包含了静态构造函数,静态属性等,将三个类的行都打上断点(需要断点的行有注释——加断点调试),当调试的时候,为什么总是最后执行到SingletonCounter的静态变量instance上???

测试了很多,和Singleton类的静态构造函数有关,望指点一二,谢谢!!!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _04_Singleton3
{
class Program
{
[STAThread]
static void Main()
{//加断点调试
var temp = Singleton.Instance;
var str = Test.str;
for (int i = 0; i < 20; i++)
{
Console.WriteLine("Next singleton value: {0}", SingletonCounter.Instance.NextValue());
}
Console.ReadKey();
}
}

//1、sealed 类
sealed class SingletonCounter
{
    private int Count = 0;//加断点调试

    //2、私有构造函数
    private SingletonCounter() 
    {//加断点调试 

    }

    //3、公开静态实例对象
    public static readonly SingletonCounter Instance = new SingletonCounter();//加断点调试 

    public long NextValue()
    {
        return ++Count;
    }
}

sealed class Test
{
    private int count = 0;//加断点调试

    public static string str = "aaa";//加断点调试

    public static readonly Test Instance = new Test();//加断点调试
}

sealed class Singleton
{
    private static readonly Singleton instance = new Singleton();//加断点调试
    static Singleton()
    {//加断点调试
    }

    private Singleton()
    {//加断点调试
    }

    public static Singleton Instance//加断点调试
    {
        get
        {
            return instance;
        }
    }
    /* 
     * 
     * 
     * 
     * 
     * 
     */

}

}


  • 写回答

5条回答 默认 最新

  • jok_219 2015-10-22 01:58
    关注

    我看了一下,类 Singleton 貌似并没有引用 类 SingletonCounter 但是你的这几个类都写在了同一个.CS文件中,那么我猜测,你在调试时,系统会编译并加载所有的类。
    当加载类时,就会触发其静态部分的代码(静态字段,静态构造函数,或许还有静态属性),所以你的断点就触发在 SingletonCounter 中了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘