【问题标题】:C# list of array typeC# 数组类型列表
【发布时间】:2017-01-20 09:42:58
【问题描述】:

我想创建一个数组类型列表。 我想创建包含值的数组:

array = [a,b];

然后我想把这个数组放在列表中:

List<Array> list = new List<Array>( );

我可以使用字符串类型列表来做到这一点,但使用数组类型就不行了:

List<String> list = new List<String>( );

我来自 javascript 背景,对 c# 中的集合概念不太熟悉。 另外,我如何像在 javascript 中一样在 c# 中创建数组:

var arrTemp = ["a", "b"];

【问题讨论】:

  • 你在数组里放什么?例如,您需要List&lt;string[]&gt; list;
  • @Lee 处理将 list 作为返回类型的代码。无法改变。
  • 您在 c# 中的 js 语句看起来像 new List{"a", "b"} 或 new [] {"a", "b"},但这些答案被否决了: )
  • 您要存储在数组中的类型是动态/变化的吗?还是只有一种?
  • @jtabuloc 一种类型。

标签: c# arrays collections


【解决方案1】:

好吧,既然你的数组是string[]:

 var arrTemp = ["a", "b"]; 

您必须将所需的list 声明为List&lt;string[]&gt;

 // list of string arrays
 List<string[]> list = new List<string[]>() {
   new string[] {"a", "b"} 
 };

如果您希望能够将 any 数组放入 list 中,请将其声明为尽可能松散 (List&lt;object[]&gt;):

 // list of abitrary arrays
 List<object[]> list = new List<object[]>() {
   new string[] {"a", "b"},
   new double[] {123.45, 789.12, 333.55}, 
   new object[] {'a', "bcd", 1, 244.95, true},
 };

【讨论】:

    【解决方案2】:

    希望对你有帮助

    var test = new List&lt;int[]&gt;();

    【讨论】:

      【解决方案3】:

      可以实际创建一个数组列表:

      var listOfArrays = new List<Array>();
      

      这样做的问题是很难使用数组本身,因为Array 类型不支持数组语法。 (例如,您不能使用listOfArrays[0][0])相反,您必须使用GetValue 方法进行检索:

      var obj = listOfArrays[0].GetValue(0);
      

      但这还有另一个问题。 GetValue 方法返回 object,因此虽然您始终可以将其强制转换为所需的类型,但在选择此方法时会失去类型安全性。

      或者,您可以只存储 object[] 数组:

      var listOfArrays = new List<object[]>();
      var obj = listOfArrays[0][0];
      

      虽然这解决了数组表示法的问题,但您仍然失去了类型安全性。

      相反,如果可能的话,我建议找到一个特定类型,然后只使用该类型的数组:

      var listOfArrays = new List<string[]>();
      string s = listOfArrays[0][0];
      

      【讨论】:

        【解决方案4】:

        例如,一个字符串数组将是

        var arrayOfString = new string[]{"a","b"};
        // or shorter form: string[] arrayOfString  = {"a","b"};
        // also: var arrayOfString = new[] { "a", "b" }
        

        然后创建一个 list-of-arrayOfString 将是

        var listOfArrayOfString = new List<string[]>();
        

        这适用于任何类型,例如,如果您有一个类 MyClass

        var arrayOfMyClass = new MyClass[]{ ... }; // ... is you creating instances of MyClass
        var list = new List<MyClass[]>();
        

        【讨论】:

          猜你喜欢
          • 2018-04-27
          • 1970-01-01
          • 2017-01-28
          • 1970-01-01
          • 2019-07-27
          • 2018-09-09
          • 1970-01-01
          • 1970-01-01
          • 2016-10-26
          相关资源
          最近更新 更多