【问题标题】:How can I add the same value into multiple lists in one line?如何将相同的值添加到一行中的多个列表中?
【发布时间】:2021-11-15 01:24:55
【问题描述】:

我有两个列表,l1 和 l2

List<string> l1 = new List<string>();
List<string> l2 = new List<string>();

我想一次性将string.Empty 放入它们中。

我们可以为变量做 -

string a;
string b;
a = b = string.Empty;

我不想创建List&lt;List&lt;string&gt;&gt;

有人可以帮我吗?提前致谢。

【问题讨论】:

    标签: c# asp.net .net-core


    【解决方案1】:

    我想一次性将 string.Empty 放入它们中。

    你不能。您可以使它们指向同一个列表,但您不能同时添加到两个列表中。这也没有任何意义。你什么也得不到。如果除了代码美学之外您还需要它,请打开一个包含您这样做的理由的问题,因为根据您想用它实现的目标有不同的概念。

    【讨论】:

      【解决方案2】:

      您可以使用空字符串变量初始化列表。

      List<string> l1 = new List<string>() { string.Empty };
      

      或者这样的东西

      string[] array = { string.Empty };
      List<string> l1 = new List<string>(array);
      List<string> l2 = new List<string>(array);
      

      无论哪种方式,您都将拥有与现在相同或更少的代码行数。

      l1 = l2 不适用于列表,但您可以这样做

      List<string> l2 = l1.ToList();
      

      【讨论】:

      • 所以你可以在一行中完成,但它真的不可读:List&lt;string&gt; l1 = new() { string.Empty }, l2 = l1.ToList();
      • 您仍然需要声明l2。这让我想起了旧的 C 代码,其想法是尽可能少地编写代码,或者让它看起来像一个符号波。
      • 确实定义了 l2,List&lt;string&gt; l1 = new() { string.Empty }, l2 = l1.ToList(); 编译正常。
      【解决方案3】:

      您可以编写一个将您的项目添加到两个列表的方法:

      private void AddToTwoLists<T>(List<T> list1, List<T> list2, T item)
      {
          list1.Add(item);
          list2.Add(item);
      }
      

      你可以调用它

      AddToTwoLists(l1, l2, string.Empty);
      

      【讨论】:

        【解决方案4】:

        我不想创建List&lt;List&lt;string&gt;&gt;

        如果您只有两个列表,您可以不使用二维数组来完成,但如果您计划在某个时候拥有更多列表,那么使用数组将是一种更方便且可扩展的解决方案:

        var l1 = new List<string>();
        var l2 = new List<string>();
        
        foreach (var list in new[] { l1, l2 })
           list.Add(string.Empty);
        

        它可以让你避免为每个列表写Add

        【讨论】:

          【解决方案5】:

          可以当然可以这样做:

          // Most comparable solution to:
          string a;
          string b;
          a = b = string.Empty;
          
          // is in my opinion this
          List<string> list1, list2 = new List<string>(list1 = new List<string>{ string.Empty });
          

          但老实说,我不明白你的问题为什么你会这样做。 这段代码只是用一个条目创建两个列表。最后是相同的结果:

          List<string> list1 = new List<string>{ string.Empty }
          List<string> list2 = new List<string>{ string.Empty }
          

          dotnet fiddle 中的完整示例

          【讨论】:

            猜你喜欢
            • 2022-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-15
            • 1970-01-01
            • 2017-03-25
            相关资源
            最近更新 更多