【发布时间】: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???对不起,但它不是这样工作的
标签: c# multithreading task