将字典创建为没有完整类型声明的参数的更短方法

问题描述 投票:-1回答:1

对于下面对Test2()的调用,无论如何都要缩短它以省略明确的输入?

class Program
{
    static void Main(string[] args)
    {
        Test(("a", (1, "b")));
        Test2(new Dictionary<string, (int, string)>()
                { {"a", (1, "b") } });
    }

    static void Test((string, (int, string)) data)
    {
    }
    static void Test2(Dictionary<string, (int, string)> data)
    {
    }
}
c# generics parameter-passing
1个回答
0
投票

在C#中,您定义的构造可以适合多种类型,因此无法推断它是指Dictionary。

下面,我使用params关键字接受您指定的元组类型的数组,然后从中创建一个字典以调用需要Dictionary的方法。

    private static void Main(string[] args)
    {
        Test(("a", (1, "b")));
        TestWrap(
            ("a", (1, "b")), 
            ("b", (3, "c"))
            );
    }

    private static void Test((string, (int, string)) data)
    {
    }

    private static void TestWrap(params (string, (int, string))[] data)
    {
        Test2(data.ToDictionary(v => v.Item1, v => v.Item2));
    }

    private static void Test2(Dictionary<string, (int, string)> data)
    {
    }
© www.soinside.com 2019 - 2024. All rights reserved.