我问了一个关于Currying和关闭的问题.什么是关闭?它与currying有什么关系?
computer-science glossary functional-programming terminology
string [] files = new string[2];
files[0] = "ThinkFarAhead.Example.Settings.Configuration_Local.xml";
files[1] = "ThinkFarAhead.Example.Settings.Configuration_Global.xml";
//Resharper complains this is an "access to modified closure"
for (int i = 0; i < files.Length; i++ )
{
// Resharper disable AccessToModifiedClosure
if(Array.Exists(Assembly.GetExecutingAssembly().GetManifestResourceNames(),
delegate(string name) { return name.Equals(files[i]); }))
return Assembly.GetExecutingAssembly().GetManifestResourceStream(files[i]);
// ReSharper restore AccessToModifiedClosure
}
Run Code Online (Sandbox Code Playgroud)
虽然ReSharper抱怨这是"访问修改后的闭包",但上述情况似乎工作正常.任何人都可以阐明这一点吗?
(这个主题在这里继续)
这是Access到Modified Closure的问题扩展.我只是想验证以下内容是否足够安全,适合生产使用.
List<string> lists = new List<string>();
//Code to retrieve lists from DB
foreach (string list in lists)
{
Button btn = new Button();
btn.Click += new EventHandler(delegate { MessageBox.Show(list); });
}
Run Code Online (Sandbox Code Playgroud)
我每次启动时都只运行一次.现在似乎工作正常.正如Jon在某些情况下提到的反直觉结果一样.那么我需要注意什么呢?如果列表不止一次运行会没问题吗?
我正在阅读面向对象的Javascript,并发现了闭包的概念.我不太明白为什么以及何时使用它.像Java这样的其他语言也有闭包吗?我基本上想了解如何了解闭包的概念可以帮助我改进编码.
本程序应将.txt文件重命名为.txtok.在我的测试目录中,我创建了~10个文本文件.
在运行时,抛出了FileNotFoundException.丢失的文件是一个已经在之前的线程中重命名的文件.
似乎多个线程已经在一个Loop-Iteration中启动了!?
static void Main(string[] args)
{
foreach (String s in Directory.EnumerateFiles(@"C:\Test", "*.txt", SearchOption.TopDirectoryOnly))
{
new Thread(() =>
{
File.Move(s, s + "ok");
}).Start();
}
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
有人有问题吗?
谢谢