在C#中,让线程同步有两种方式:
线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成 new
出来的普通CLR对象。
最近做一个配置的功能,需求是该配置项跟另一个整形配置项关联,具有一定的函数关系,例如有一个配置项是值为 N
,则另一配置 F
项满足函数关系。这个函数关系是客户手动输入,只需要简单的四则运算,所以我们要做的就是判断四则运算表达式是否有效,且给定 N
的值,算出表达式的值。
如何快速判断一个四则运算公式字符串是否符合规则,且根据给定值计算出该公式的值?
先不论什么是闭包,什么是闭包陷阱,我们开篇先看一段代码:
csharpstatic void Main(string[] args)
{
List<Action> lists = new List<Action>();
for (int i = 0; i < 5; i++)
{
Action action = () => { Console.WriteLine(i); };
lists.Add(action);
}
foreach (var action in lists)
{
action();
}
Console.ReadLine();
}
那么思考一下,控制台输出是什么?