【发布时间】:2019-07-09 08:24:16
【问题描述】:
我正在学习这本书的考试参考 70-483:Programming in C#。
在使用并发集合一章中,有一个例子:
#region Listing 1-30
ConcurrentBag<int> bag = new ConcurrentBag<int>();
bag.Add(42);
bag.Add(21);
int result;
if (bag.TryTake(out result))
Console.WriteLine(result);
if (bag.TryPeek(out result))
Console.WriteLine("There is a next item: {0}", result);
#endregion
问题是:它如何将变量 int 结果与 bag 联系起来?
没有声明结果 = bag.DoSomeThingInLinq。
提前致谢
【问题讨论】:
-
您了解
out变量的工作原理吗?而且您还了解TryTake()(可能)返回 两个 值 - 采用的值,加上一个结果标志? -
bag.TryTake(out result) 因为已经声明了“result”。 “输出结果”连接它。我认为,您应该阅读“out”的工作原理。 out 关键字导致参数通过引用传递。它使形参成为实参的别名,实参必须是变量。换句话说,对参数的任何操作都是在参数上进行的。它类似于 ref 关键字,只是 ref 要求在传递变量之前对其进行初始化。关于“out”的 MSDN 链接:docs.microsoft.com/en-us/dotnet/csharp/language-reference/…>