task.result.count , 任务

task.result.count , Task

我只是想知道 task.result.length 和直接使用 属性 有什么区别。

所以我有这个:

int count = 20000;
char charToconcatnate = '1';

Task<string> task = Task.Factory.StartNew(() => ConcatChars(charToconcatnate, count));
Console.WriteLine("IN progress");
task.Wait();

Console.WriteLine("Completed");
Console.WriteLine("The length of the result is:" + task.Result.Length);
Console.Read();


public static string ConcatChars(char charToConcanate, int count)
{
    string concateneatedString = string.Empty;

    for (int i = 0; i < count; i++)
    {
        concateneatedString += charToConcanate;
    }           
    return concateneatedString;
}            

但是如果我这样做的话:

int count = 20000;
char charToconcatnate = '1';

Task task = Task.Factory.StartNew(() => ConcatChars(charToconcatnate, count));
Console.WriteLine("IN progress");
task.Wait();

Console.WriteLine("Completed");
Console.WriteLine("The length of the result is:" + count);
Console.Read();


public static string ConcatChars(char charToConcanate, int count)
{
    string concateneatedString = string.Empty;

    for (int i = 0; i < count; i++)
    {
        concateneatedString += charToConcanate;
    }           
    return concateneatedString;
}            

两者输出相同

那有什么区别呢?

task.Result 是一个长度为 20,000 个字符的字符串。所以 task.Result.Length returns 20000.

count 也 returns 20000。 (这就是导致 task.Result 一开始就有 20,000 个字符的原因!)

两个输出相同,因为它们获得相同的字符串连接值 (20000)。