【问题标题】:Convert list to params C#将列表转换为参数 C#
【发布时间】:2017-03-21 09:50:41
【问题描述】:

我有以下列表:

var myList = new List<KeyValuePair<string, object>>();

还有这个功能:

public void Test(params KeyValuePair<string, object>[] list)

使用该函数时如何将列表转换为参数? 像这样:

Test(myList);

【问题讨论】:

  • Test(myList.ToArray());
  • myList.ToArray()
  • 谢谢,我不知道 :)

标签: c# list parameters keyvaluepair


【解决方案1】:

您的方法声明 KeyValuePair&lt;string, object&gt;[] list 声明它将接受一个数组,因此您需要像这样将您的列表转换为数组

Test(myList.ToArray());

【讨论】:

    【解决方案2】:

    鉴于最初的问题,我认为有必要澄清 params 关键字的功能。 它必须是一维数组的装饰器,并且只允许调用函数的替代语法。

    例如,如果我们有一个字符串连接函数:

    public string Test(string[] names) {
        return String.Join(",", names);
    }
    

    这可以调用

    Test(new[] { "Fred", "Wilma", "Pebbles"});

    但包含 params 关键字只会让调用语法看起来更友好:

    public string Test(params string[] names) {
        return String.Join(",", names);
    }
    

    Test("Fred", "Wilma", "Pebbles");

    我不是 params 关键字的超级粉丝,但我有时会使用它来使调用代码更具可读性(如本例所示)。

    因此,当 OP 询问“如何将列表转换为参数?”时,基本事实是您没有,因为 params 不是一种类型,而只是一个“语法糖”功能为传入数组提供了另一种语法。

    【讨论】:

      【解决方案3】:

      您应该将列表转换为可以作为参数接受的形式。在这种情况下,将 List 转换为 Array

      因此,

      var arrayParam = mylist.ToArray();
      Test(arrayParam);
      

      【讨论】:

        猜你喜欢
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-30
        相关资源
        最近更新 更多