基础知识不扎实,有段代码难以理解,求解
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace staticTest
{
class Program
{
public static List<string> StrList;
static void Main(string[] args)
{
StrList = new List<string>();
ThreadPool.QueueUserWorkItem(new WaitCallback(ReadStr));
while (true)
{
StrList = new List<string>();
var length = Int32.Parse(Console.ReadLine());
for (int i = 0; i < length; i++)
{
StrList.Add(i.ToString());
}
Console.WriteLine("初始化{0}个元素", StrList.Count);
}
}
static void ReadStr(object args)
{
var rds = new ReadStrList(StrList);
while (true)
{
rds.Read();
Thread.Sleep(5000);
}
}
public class ReadStrList
{
List<string> _StrList;
public ReadStrList(List<string> strList)
{
this._StrList = strList;
}
public void Read()
{
Console.WriteLine("StrList中有{0}个元素", _StrList.Count);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace staticTest
{
class Program
{
public static List<string> StrList;
static void Main(string[] args)
{
StrList = new List<string>();
ThreadPool.QueueUserWorkItem(new WaitCallback(ReadStr));
while (true)
{
//这里重新分配了地址
StrList = new List<string>();
var length = Int32.Parse(Console.ReadLine());
for (int i = 0; i < length; i++)
{
StrList.Add(i.ToString());
}
Console.WriteLine("初始化{0}个元素", StrList.Count);
}
}
static void ReadStr(object args)
{
//如果这里加入延时,保证下面的语句在第二次new List<string>()之后执行,
//那么读取到的个数也会跟着变化
//Thread.Sleep(5000);
var rds = new ReadStrList(StrList);
while (true)
{
rds.Read();
Thread.Sleep(5000);
}
}
public class ReadStrList
{
List<string> _StrList;
public ReadStrList(List<string> strList)
{
this._StrList = strList;
}
public void Read()
{
Console.WriteLine("StrList中有{0}个元素", _StrList.Count);
}
}
}
}
static void ReadStr(object args)
{
while (true)
{
Console.WriteLine("StrList中有{0}个元素", StrList.Count);
Thread.Sleep(5000);
}
}