task.result.count ,任务[关闭]
Posted
技术标签:
【中文标题】task.result.count ,任务[关闭]【英文标题】:task.result.count , Task [closed] 【发布时间】:2021-10-26 06:32:25 【问题描述】:我只是想知道 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;
两者的输出是一样的。
那么有什么区别呢?
【问题讨论】:
没有minimal reproducible example 是不可能的(即知道ConcatChars
做了什么)。
简短的回答是第二个代码块没有意义。 无论ConcatChars
做了什么,输出都是相同的。第一个代码块实际上是检查ConcatChars
的输出。这就像把我的孩子送到商店并说“买 144 个鸡蛋”,然后当他们回来时宣布我有 144 个鸡蛋而不看他买了什么。
我编辑了我的问题。那为什么还是-1???对不起,但它不是这样工作的
【参考方案1】:
task.Result
是一个 20,000 个字符长的字符串。所以task.Result.Length
返回20000
。
count
也返回 20000
。 (这就是导致 task.Result
首先是 20,000 个字符的原因!)
两个输出是相同的,因为它们为字符串连接获得了相同的值 (20000
)。
【讨论】:
以上是关于task.result.count ,任务[关闭]的主要内容,如果未能解决你的问题,请参考以下文章