比方說,我有一個數組,我需要存儲字符串值以及雙值。我知道我可以將雙打存儲爲字符串,只處理轉換,但是可以使用兩種數據類型的數組嗎?如何存儲混合陣列數據?
2
A
回答
4
您可以使用object[]
並進行一些類型檢查。無論如何,訪問雙打時你會得到一些裝箱/取消裝箱,但是這將比double.Parse()
更快。
另一種方法是創建具有這兩種類型和標記物的類:
class StringOrDouble
{
private double d;
private string s;
private bool isString;
StringOrDouble(double d)
{
this.d = d;
isString = false;
}
StringOrDouble(string s)
{
this.s = s;
isString = true;
}
double D
{
get
{
if (isString)
throw new InvalidOperationException("this is a string");
return d;
}
}
string S
{
get
{
if (!isString)
throw new InvalidOperationException("this is a double");
return s;
}
}
bool IsString { get { return isString; } }
}
,然後創建StringOrDouble的陣列。這會讓你免於一些類型檢查和裝箱,但會有更大的內存開銷。
+0
^是你在這裏描述的結構? – sooprise 2010-09-07 19:33:57
3
0
object[]
和ArrayList
是兩個不錯的選擇;這取決於您是需要傳統的固定長度數組還是矢量(可變長度數組)。此外,如果字符串和雙打是你可以處理的唯一事情,並且你需要能夠將它們作爲字符串加倍並且加倍,那麼我會將它們中的一個「包裝」到一個自定義類中,它執行了一些類型檢查。
0
不是最有效的使用,但如何靈活:
var a = new object[] {1,2,3,"paul",5.5}
甚至
var a = new object[] {1,2,3,"paul",5.5, new List<string>() {"apple","banana","pear"} }
相關問題
- 1. 如何在覈心數據中存儲混合陣列
- 2. 存儲陣列中的合同數據
- 3. ORM - 混合與存儲器內數據
- 4. 保存一個numpy的陣列具有混合數據
- 5. 混合陣列串
- 6. AFNetworking混合陣列?
- 7. 實體框架存儲數據陣列
- 8. 存儲陣列到數據庫
- 9. 在陣列上存儲輸入數據
- 10. 存儲陣列的數據訪問
- 11. 數據結構是存儲在陣列
- 12. 存儲陣列值數據庫
- 13. 數據不存儲在陣列中
- 14. 如何使陣列混合值獨特的陣列
- 15. 何處/如何存儲數據集合
- 16. 混合陣列和對象
- 17. PHP多維混合陣列
- 18. 混合陣列和對象
- 19. 混合兩個陣列
- 20. 在混合陣列中添加數字
- 21. MAX數值從混合陣列
- 22. 如何存儲一系列陣列
- 23. 從Redis獲取陣列數據 - 如何存儲和檢索
- 24. 如何查詢雲數據存儲區中的空陣列
- 25. 如何將數據存儲到MySQL在陣列中的多個
- 26. 如何存儲零陣列數據用C
- 27. 如何存儲陣列的數據使用Laravel的foreach與ORM
- 28. 如何在數據庫中存儲堆棧或長陣列?
- 29. 如何從字符串數據存儲到陣列定界符
- 30. 如何設計存儲陣列的簡單Firebase數據庫?
多少性能是非常重要的?如果是這樣,我可以嘗試編寫一個自定義類來單獨存儲它們,但將它們暴露爲一個。 – Aliostad 2010-09-07 19:41:12
你如何檢測你是否拉出雙線或字符串。他們總是以相同的順序還是? – 2010-09-07 19:46:47