簡體   English   中英

C# 數組類型列表

[英]C# list of array type

我想創建一個數組類型的列表。 我想創建包含值的數組:

array = [a,b];

然后我想把這個數組放在列表中:

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

我可以用字符串類型列表來做到這一點,但對數組類型沒有運氣:

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

我來自 javascript 背景,對 c# 中的集合概念不太熟悉。 另外,我如何像在 javascript 中那樣在 c# 中創建數組:

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

好吧,因為你的數組是string[]

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

您必須將所需list聲明為List<string[]>

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

如果您希望能夠將任何數組放入list ,請盡可能將聲明為松散( List<object[]> ):

 // 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},
 };

希望這可以幫到你

var test = new List<int[]>();

您實際上可以創建一個數組列表:

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];

例如,一個字符串數組將是

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[]>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM