如何将两个不同类型的变量打包到一个对象变量中?

And*_*rew 0 .net c# queue multithreading

我正在编写多线程应用程序。

我需要那种功能:method#1将数据放入Queue<>,然后method#2从Queue中获取数据并进行处理。

Method#2接受2个参数:XElementFileInfo。如何存储这两个变量以Queue<>备将来使用?

Jas*_*zun 5

使用Tuple<XElement, FileInfo>。实例化如下:

Tuple<XElement, FileInfo> tuple = new Tuple<XElement, FileInfo>(elem, file);
Run Code Online (Sandbox Code Playgroud)

然后像这样检索其值:

XElement elem = tuple.Item1;
FileInfo file = tuple.Item2;
Run Code Online (Sandbox Code Playgroud)

因此,您可以将a Tuple<XElement, FileInfo>放入您的中Queue<Tuple<XElement, FileInfo>>,然后使元组出队并将其项传递给方法2。

  • 我不会拒绝这个问题,因为这个答案在技术上是正确的,但是这样做的确很糟糕。“元组”使阅读代码成为一场噩梦(一切都是“项目1”,“项目2”等……,特别是如果它成为一种习惯。我曾经在一个项目中工作,前团队成员使用元组来完成所有工作,当时几乎不可能理解代码。您实际上不应该这样做。 (2认同)