我在寫多線程應用程序。如何將兩個不同類型的變量打包成一個對象變量?
我需要這樣的功能:一個method#1
將數據放入Queue<>
,method#2
從隊列中取得這些數據並處理它。
Method#2
需要2個參數:XElement
和FileInfo
。如何將這兩個變量存儲在Queue<>
中以備後用?
我在寫多線程應用程序。如何將兩個不同類型的變量打包成一個對象變量?
我需要這樣的功能:一個method#1
將數據放入Queue<>
,method#2
從隊列中取得這些數據並處理它。
Method#2
需要2個參數:XElement
和FileInfo
。如何將這兩個變量存儲在Queue<>
中以備後用?
使用Tuple<XElement, FileInfo>
。實例這樣的:
Tuple<XElement, FileInfo> tuple = new Tuple<XElement, FileInfo>(elem, file);
,然後檢索這樣的價值觀:
XElement elem = tuple.Item1;
FileInfo file = tuple.Item2;
所以,你可以把一個Tuple<XElement, FileInfo>
到您Queue<Tuple<XElement, FileInfo>>
,然後出隊的元組,並通過他們的項目方法#2 。
您可以創建一個具有XElement和FileInfo兩個屬性的類,然後將該類的實例存儲在Queue中。
public MyClass {
public XElement xElement;
public FileInfo fileInfo;
}
然後使用它:
Queue<MyClass> queue = new Queue<MyClass>();
foreach (MyClass instance in queue) {
Method#2(instance.xElement, instance.fileInfo);
}
這是一個比使用'Tuple'更好的解決方案 - 代碼更具可讀性。 – xxbbcc
任何你無法創建組合模型的原因,你可以用這兩個值填充隊列? –
你嘗試過元組嗎? – Jashaszun
@ErikPhilips我以爲我可以避免創建新的類/結構... – Andrew