У меня есть класс с двумя приватными списками (изначально пустыми) и методом 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++)
{
//
}
}
}
}