相关疑难解决方法(0)

什么是.NET中的'闭包'?

什么是关闭?我们在.NET中有它们吗?


如果它们确实存在于.NET中,您能否提供一个代码片段(最好用C#)来解释它?


编辑:我浏览了Jon Skeet的文章,了解什么是闭包以及如何在.NET中使用它们.

.net closures

190
推荐指数
4
解决办法
4万
查看次数

在开始使用LINQ时,人们犯的最大错误是什么?

人们在第一次使用LINQ时遇到的根本误解是什么?

例如,他们认为当它真的是别的时候它是一回事吗?

并且,是否有一些最佳实践来避免这些错误?

.net linq

34
推荐指数
6
解决办法
6836
查看次数

延期执行和急切评估

能否请您在C#中通过热切评估给出一个延迟执行的示例?

我从MSDN上读到LINQ中的延迟执行可以通过惰性或急切评估来实现.我可以在互联网上找到延迟执行延迟执行的示例,但是我找不到任何带有急切评估的延迟执行的示例.

此外,延迟执行与惰性评估有何不同?在我看来,两者看起来都一样.你能为此提供任何一个例子吗?

c# linq c#-3.0

11
推荐指数
2
解决办法
8886
查看次数

C#-Closure -Clarification

我正在学习C#.我的意思是关闭 a construct that can adopt the changes in the environment in which it is defined.

示例:

List<Person> gurus = 
new List<Person>()
                 {
                  new Person{id=1,Name="Jon Skeet"},
                  new Person{id=2,Name="Marc Gravell"},
                  new Person{id=3,Name="Lasse"}
                 };            


void FindPersonByID(int id)
{
  gurus.FindAll(delegate(Person x) { return x.id == id; }); 
}
Run Code Online (Sandbox Code Playgroud)

该变量id在FindPersonByID()的范围内声明但是我们仍然可以访问id匿名函数内的局部变量(即)delegate(Person x) { return x.id == id; }

(1)我对封闭的理解是否正确?

(2)我们可以从封闭中获得哪些优势?

c# linq closures anonymous-methods

9
推荐指数
1
解决办法
2235
查看次数

Linq警告

Linq是.NET的一个很棒的补充,我发现它在很多情况下都很好用,即使我刚开始学习如何使用Linq.

然而,在我对Linq所做的阅读中,我发现开发人员需要注意一些微妙的事情,这可能会导致麻烦.

我已经提到了一个明确的警告,我发现这是延迟执行的结果.

所以我想知道,对于Linq来说,Linq的新手应该知道哪些其他注意事项?

.net linq

6
推荐指数
1
解决办法
373
查看次数

LINQ,匿名类型和闭包问题

我有一段代码使用LINQ过滤列表,创建匿名类型的实例列表,并为每个实例分配一个事件处理程序:

// Select every linear expression and create a menu item from it
var items = from expr in expressionList.Expressions
            where expr.Type == ExpressionType.Linear
            let stdExpr = (StandardExpression)expr
            select new
            {
                Menu = new ToolStripMenuItem(stdExpr.Expression), // string
                stdExpr.Slot // int
            };

// Wire a Click event handler to each menu to set the tracked line
foreach (var item in items)
{
    item.Menu.Click += (s, e) => graph.SetTrackedLine(item.Slot);

    menuTrackLineWithMouse.DropDownItems.Add(item.Menu);
}
Run Code Online (Sandbox Code Playgroud)

这很有效,因为事件处理程序有线并且菜单被正确添加.单击菜单项时会出现问题,并触发处理程序.无论哪个菜单项触发了处理程序,只传递最后一个SetTrackedLine.

一个例子是,如果我有两个菜单,"sin(x)",带槽0,"cos(x)",带槽1,两个Click事件都传递1 …

c# linq closures anonymous-types

3
推荐指数
1
解决办法
940
查看次数

标签 统计

linq ×5

.net ×3

c# ×3

closures ×3

anonymous-methods ×1

anonymous-types ×1

c#-3.0 ×1