方法的延迟初始化

我有一个带有两个私有列表的类(最初是空的)和一个在这些列表中进行一些搜索的Search方法。我希望列表仅初始化一次并且线程安全。 对于这种情况,.NET中是否有类似于Lazy<T>的构造?我可以将Init()放在锁中,并使用一些标志来避免重复初始化,或者将Lazy<List<int>>用于列表。 填写列表的逻辑很复杂,因此每个列表都不能有单独的方法

public class Myclass
{
    private static List<int> list1;
    private static List<int> list2;

    static bool init=false;
    private static object locker=new object();
    private static void Init()
    {
         lock(locker)
         {
           if(init)
             return;
            // fill list1,//fill list 2
            init=true;
         }
    }

    public static void Search(string query)
    {
        if(!init)
            Init();

        for(int i = 0; i < list1.Count; i++)
        {
            for(int j = 0; j < list2.Count; j++)
            {
                //
            }
        }
    }
}
wangzywangzy 回答:方法的延迟初始化

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3144622.html

大家都在问