簡體   English   中英

隱式和顯式轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM