小编tui*_*oel的帖子

这些例子是C#闭包吗?

我仍然不太清楚闭包是什么,所以我发布了这两个例子,我想知道这些例子是否都是闭包?

例A:

List<DirectoryInfo> subFolders = new List<DirectoryInfo>();

Action<string> FilterSubFoldersStartA =
  s => subFolders.
       AddRange((new DirectoryInfo(s)).GetDirectories().
       Where(d => d.Name.StartsWith("A")));

FilterSubFoldersStartA(@"c:\tempa");
FilterSubFoldersStartA(@"c:\tempb");
Run Code Online (Sandbox Code Playgroud)

例B:

List<DirectoryInfo> subFolders = new List<DirectoryInfo>();

string filter = "A";

Action<string> FilterSubFoldersStartGen =
  s => subFolders.
       AddRange((new DirectoryInfo(s)).GetDirectories().
       Where(d => d.Name.StartsWith(filter)));

FilterSubFoldersStartGen(@"c:\tempa");

filter = "B"; 

FilterSubFoldersStartGen(@"c:\tempb");
Run Code Online (Sandbox Code Playgroud)

c# closures

13
推荐指数
2
解决办法
1263
查看次数

C#,IAsyncResult和线程池

我使用的Action<object>.BeginInvoke()方法,这是否使用线程池?

我有以下C#代码:

    List<FileHash> hashList1 = hashList.Where((x, ind) => ind % 2 == 0).ToList();
    List<FileHash> hashList2 = hashList.Where((x, ind) => ind % 2 == 1).ToList();

    Action<object> oddWork = CalcHash;
    Action<object> evenWork = CalcHash;

    IAsyncResult evenHandle = evenWork.BeginInvoke(hashList1, null, null);
    IAsyncResult oddHandle = oddWork.BeginInvoke(hashList2, null, null);

    evenWork.EndInvoke(evenHandle); 
    oddWork.EndInvoke(oddHandle);
Run Code Online (Sandbox Code Playgroud)

是否在幕后使用线程池?或者系统是否创建正常线程?

c# iasyncresult threadpool

5
推荐指数
1
解决办法
6341
查看次数

标签 统计

c# ×2

closures ×1

iasyncresult ×1

threadpool ×1