【发布时间】:2012-06-02 16:55:27
【问题描述】:
我需要存储一个语言代码字符串,例如“en”,它总是包含 2 个字符。
将类型定义为“String”还是“Char”更好?
private string languageCode;
对
private char[] languageCode;
或者还有其他更好的选择吗?
这 2 个如何存储在内存中?分配值时将分配多少字节或位?
【问题讨论】:
-
你有没有向自己证明这是一个问题?我很少发现在使用字符串时需要担心内存——尤其是这么小的字符串。如果它没有显示为问题,那么在它出现之前不要担心它。如果字符串导致您出现内存问题,这在以后很容易解决。否则使用字符串,甚至不要考虑内存问题。
-
我有一个非常严格的逻辑,可以在内存中存储数千个这样的内容,所以每一点都有帮助。
-
@William 如果性能如此关键,为什么不声明
enum LanguageCode : short并节省 2 个字节? -
最多有 20 种组合。不确定这样的枚举是如何存储在内存中的,或者它是否更好?
-
@William 在这种情况下,选择
byte,它需要 1 个字节。我已经更新了我的答案。枚举是值类型,并且在方法范围内时将存在于堆栈上,或者在类范围内的类的堆空间内。
标签: c# memory memory-management garbage-collection clr