相关疑难解决方法(0)

foreach标识符和闭包

在以下两个片段中,第一个是安全的还是你必须做第二个?

安全我的意思是每个线程保证从创建线程的相同循环迭代中调用Foo上的方法?

或者你必须将引用复制到一个新的变量"local"到循环的每次迭代?

var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{      
    Thread thread = new Thread(() => f.DoSomething());
    threads.Add(thread);
    thread.Start();
}
Run Code Online (Sandbox Code Playgroud)

-

var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{      
    Foo f2 = f;
    Thread thread = new Thread(() => f2.DoSomething());
    threads.Add(thread);
    thread.Start();
}
Run Code Online (Sandbox Code Playgroud)

更新:正如Jon Skeet的回答所指出的,这与线程没有任何关系.

c# closures enumeration

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

在函数式编程风格中最好的任务是什么?

我刚刚发现了函数编程风格,我相信它会减少开发工作,使代码更容易阅读,使软件更易于维护.然而,问题是我在说服任何人.

好吧,最近我有机会就如何减少软件开发和维护工作发表演讲,我想向他们介绍函数式编程的概念以及它如何使团队受益.我有这样的想法,即向人们展示两组完全相同的代码,一个以非常强制的方式编码,另一个以非常实用的方式编写,以表明函数式编程可以使代码更简单,更容易理解和因此可维护.是否有这样的例子,除了Luca Bolognese的着名的平方和例子?

c# f# functional-programming c#-3.0

28
推荐指数
3
解决办法
8341
查看次数

为什么我的表现慢慢爬行我将方法移动到基类?

我在C#中编写不可变二进制树的不同实现,我希望我的树从基类继承一些常用方法.

不幸的是,它从基类派生类是一败涂地缓慢.非派生类可以充分发挥作用.以下是两个几乎相同的AVL树实现,用于演示:

  • AvlTree:http://pastebin.com/V4WWUAyT
  • DerivedAvlTree:http://pastebin.com/PussQDmN

这两棵树具有完全相同的代码,但我在基类中移动了DerivedAvlTree.Insert方法.这是一个测试应用程序:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Juliet.Collections.Immutable;

namespace ConsoleApplication1
{
    class Program
    {
        const int VALUE_COUNT = 5000;

        static void Main(string[] args)
        {
            var avlTreeTimes = TimeIt(TestAvlTree);
            var derivedAvlTreeTimes = TimeIt(TestDerivedAvlTree);

            Console.WriteLine("avlTreeTimes: {0}, derivedAvlTreeTimes: {1}", avlTreeTimes, derivedAvlTreeTimes);
        }

        static double TimeIt(Func<int, int> f)
        {
            var seeds = new int[] { 314159265, 271828183, 231406926, 141421356, 161803399, 266514414, 15485867, 122949829, 198491329, 42 };

            var …
Run Code Online (Sandbox Code Playgroud)

c# performance inheritance

18
推荐指数
1
解决办法
709
查看次数

F#优先级队列

F#库是否包含优先级队列?有人可以指点我在F#中实现优先级队列吗?

f# priority-queue

15
推荐指数
5
解决办法
3085
查看次数

"铁"语言是否准备好迎接黄金时段?

可以在生产系统中开始使用Iron Ruby和Iron Python吗?另外,托管它们还有其他要求吗?

而且,对于奖励积分,假设F#是一种与Python相同的函数式编程语言,那么在.NET框架中使用一个优于另一个是否有任何优势?

.net ironpython functional-programming dynamic-language-runtime

11
推荐指数
1
解决办法
708
查看次数

对于IronPython/IronRuby是F#,因为C#是VB.NET的吗?

我只是听了Chris Smith关于F#的播客,其中他讨论了F#是如何使用C#/ VB.NET 以不同的方式处理问题的语言,而不是"推动"你的链" "数据转换",以及F#将如何"变得像XML",除了您选择的语言(C#或VB.NET)之外,您还可以使用它,以便以更有效的方式解决某些问题.

让我想到了.NET语言的关系,这就是我理解它们的方式:

  • C#和VB.NET在语法上并没有实质性的不同,即C#程序员不会学习VB.NET以"以新的方式处理问题"
  • 但是,C#或VB.NET程序员会学习F#以" 以功能方式处理编程问题"

但是IronPythonIronRuby呢?Chris提到"F#从Ruby和Python中学到了很多东西",所以我认为F#与IronRuby/IronPython有类似的关系,而C#与VB.NET有关.然而,有点谷歌搜索告诉我IronRuby和IronPython都建立在DLR上,但F#不是.

如何最好地理解F#,IronRuby和IronPython之间的关系?

c# vb.net f# ironpython ironruby

7
推荐指数
3
解决办法
1678
查看次数