我想根據輸入引數的型別添加 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)));
}
uj5u.com熱心網友回復:
從純粹的“我該怎么做”的角度來看(不討論為什么以及在一般情況下這是一個好習慣) -Dictionary<TKey, TValue>
實作IDictionary
(這是字典的非通用版本),所以你可以匹配它:
case IDictionary _:
Console.WriteLine($"Dictionary data type..");
Console.WriteLine("Dictionary object : {0}", JsonConvert.SerializeObject(obj));
break;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494040.html