簡體   English   中英

多種字典類型的 C# 切換類型

[英]C# Switch type for multiple Dictionary types

我想根據輸入參數的類型添加 Switch case。 例如,我的輸入參數可以是 double 類型,Dictionary<int, string>, Dictionary<decimal, bool>

為此,我在下面添加了開關盒,它可以正確調用上述兩種字典類型,但從那里我必須調用另一個函數來記錄該字典。 對於該函數,我將輸入作為 Dictionary<object, object> 以便它可以接受兩種類型的字典,但無法將上述字典類型轉換為 Dictionary<object, object>

下面是我的完整代碼

static void Main(string[] args) {
    Dictionary < int, string > dict = new Dictionary < int, string > () {
        {
            1,
            "One"
        }, {
            2,
            "Two"
        }
    };
    Dictionary < decimal, bool > dict2 = new Dictionary < decimal, bool > () {
        {
            1,
            true
        }, {
            2,
            false
        }
    };
    Double doubleObj = 100.2;

    HandleLogging(doubleObj);
    HandleLogging(dict);
    HandleLogging(dict2);
}

private static void HandleLogging(Object obj) {
    switch (obj) {
    case double _:
        Console.WriteLine($"Dobule data type ..");
        break;

    case Dictionary < int, string > _:
    case Dictionary < decimal, bool > _:
        // case object dictType2 when dictType2 == typeof(Dictionary<decimal, bool>):

        //case Dictionary<object, object> d:
        Console.WriteLine($"Dictionary data type..");
        HandleDictionary((Dictionary < object, object > ) obj);
        break;
    default:
        Console.WriteLine("unknown type");
        break;
    }
}

private static void HandleDictionary(Dictionary < object, object > existingDictionary) {
    Console.WriteLine(string.Format("Dictionary object : {0}", JsonConvert.SerializeObject(existingDictionary)));
}

從純粹的“我該怎么做”的角度來看(不討論為什么以及在一般情況下這是一個好習慣) - Dictionary<TKey, TValue>實現IDictionary (這是字典的非通用版本),因此您可以匹配它:

case IDictionary _:
   Console.WriteLine($"Dictionary data type..");
   Console.WriteLine("Dictionary object : {0}", JsonConvert.SerializeObject(obj));
   break;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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