[英]implicit and explicit conversion
我這樣啟動一個線程:
ThreadPool.QueueUserWorkItem(new WaitCallback(SetupThread), (object)new object[] { IP, lc });
為了減少參數,我使用了該對象。 IP很容易恢復,但是列出了IP。 我該如何處理這個論點?
private void SetupThread(object obj)
{
object[] arg = obj as object[];
String IPadress = Convert.ToString(arg[0]);
List<String> listcom = arg[1];
theNDDssh.RunListCom(IPadress,
listcom,
sshqueue,
error
);
編譯器說有一個顯式轉換。 arg [1]不能隱式轉換。
List<string> listcom = (List<string>)arg[1];
它是一個簡單的演員表。 您可以對第一個參數(而不是Convert調用)執行相同的操作。
或者,您可以使用Tuple<T,T>
:
ThreadPool.QueueUserWorkItem(new WaitCallback(SetupThread), Tuple.Create(IP, lc));
將其強制轉換回目標方法,然后訪問其中的每個項目:
private void SetupThread(object obj)
{
var args = (Tuple<string, List<string>>)obj;
String IPadress = args.Item1;
List<String> listcom = args.Item2;
...
您需要將其轉換為
(List<String>)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.