比方说,我有一个数组,我需要存储字符串值以及双值。我知道我可以将双打存储为字符串,只处理转换,但是可以使用两种数据类型的数组吗?如何存储混合阵列数据?
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