小编Bet*_*eja的帖子

c#switch语句比vb.net'case'更有限

我在这里读了一篇有趣的文章,它对vb.net中的'case'语句与C#中的'switch'语句提出了一个有趣的观点,我在下面粘贴了它:

以下Visual Basic Select Case语句无法使用单个switch语句在C#中表示:

Dim Condition As Integer = 55
Select Case Condition
  Case 1, 3 To 5, 10, 12, 14, Is > 50
    'value 55 executes code here
  Case Else
    'values <1, 2, 6-9, 11, 13, 15-49
End Select
Run Code Online (Sandbox Code Playgroud)

我总是在C#中找到switch语句,在每种情况下都有一个中断和后续要求,有点笨拙.有没有理由他们没有增强switch命令来允许这些情况?什么时候会有用呢?任何人都知道构造的任何扩展,以允许更多的灵活性?

干杯

c# vb.net language-features language-design

15
推荐指数
2
解决办法
1万
查看次数

MaxDegreeOfParallelism = Environment.ProcessorCount减慢了CPU的执行时间

我有以下程序(我从http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx获得)使用Parallel.For循环拆分任务

class Program
{
    static void Main(string[] args)
    {
        var watch = Stopwatch.StartNew();


        Parallel.For(2, 20, (i) =>
        {
            var result = SumRootN(i);
            Console.WriteLine("root {0} : {1} ", i, result);
        });

        Console.WriteLine(watch.ElapsedMilliseconds);
        Console.ReadLine();
    }

    public static double SumRootN(int root)
    {
        double result = 0;
        for (int i = 1; i < 10000000; i++)
        {
            result += Math.Exp(Math.Log(i) / root);
        }
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我多次运行此测试时,我会得到以下时间:

1992年,2140年,1783年,1863年等等

我的第一个问题是,为什么时代总是不同?我每次都在进行完全相同的计算,但每次时间都不同.

现在,当我添加以下代码以使用我CPU上的所有可用处理器时:

        var parallelOptions = new ParallelOptions
        {
            MaxDegreeOfParallelism …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library parallel.foreach

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

AttachedToParent有哪些用例?

Task.Run和之间的区别之一TaskFactory.StartNewDenyChildAttach默认情况下添加新选项.但是AttachedToParent创造了一个原因.在什么情况下你想使用附加的子任务?

c# task-parallel-library

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