如何以及何时在 C# 中使用 :short?

Posted

技术标签:

【中文标题】如何以及何时在 C# 中使用 :short?【英文标题】:How and when to use :short in C#? 【发布时间】:2018-12-03 11:17:04 【问题描述】:

我想知道在 C# 中何时使用 :short

请帮助我想使用它而不是int

使用short 是好主意还是坏主意?

【问题讨论】:

不是链接问题的副本:这个问题是关于 C# 而那个问题是关于 C 当你了解了两者的区别,你就会明白什么时候用一个,什么时候用另一个。同样适用于 long、uint、ushort、ulong、decimal、double、float 等...... 如果您希望使用的数字适合给定的值范围。然后你可以安全地使用short。但这适用于所有其他原始值类型 太宽泛了,在google上很容易搜到,这个问题应该关闭 【参考方案1】:

short - 又名Int16 - 有一些非常真实但有限的用途。

示例场景:

当输入值被限制为 16 位,并且您不想违反不变量时(可能是因为它映射到 16 位的数据库列 - 例如 SQL Server 中的smallint)李> 出于类似原因声明 enum: short 因为您正在实现一个要求 16 位包装行为的算法 - 例如CRC-16 当您编写具有显式布局的 struct 时,需要映射非常具体的配置(通常与 C/C++ 映射相关)

这是不寻常的,但绝不是意外。同理:bytesbyteushortuintlongulong

int 是一个很好的默认,但它绝不是唯一的选择。

【讨论】:

public enum RUNMODE :short DebugRun = 1, SingleRun = 2, ContinuousRun = 3, SpecificRun = 4, Timer = 5, QINQContinuousRun = 6 对吗? @Jagath 确实声明了 short 类型的枚举(不是 int 类型) - 如果这就是你要问的 我使用了 :short 而不是 int,这是正确的还是将来会抛出任何错误? @Jagath "right" 非常符合上下文;拥有基于short 的枚举当然没有错误 - 而且在正确的场景中 是非常理想的。我对你的场景一无所知,所以我无法评论它是否“正确” 感谢您的建议和宝贵意见。非常感谢.. :)【参考方案2】:

您很少需要使用short,我认为认为使用它“不好”是合理的,除非有令人信服的理由使用它。

int 在现代 CPU 上的性能通常优于 short

例如,您可能需要在 struct 中使用 short,以便与旧版非托管代码进行互操作。

【讨论】:

感谢您的想法和建议。【参考方案3】:

使用正确的类型是节省内存的最佳解决方案,因为 short 的大小为 16 位,int 的大小为 32 位。

【讨论】:

这也意味着节省内存。 你必须有一个真正令人信服的理由来决定选择最小的数字类型以最小化内存压力,在一般情况下你应该坚持使用原生宽度类型 - 一个 32 位整数 - 因为这些通常表现更好。 当然 - 一定是这样的情况,当应用程序有巨大的内存需求并利用几乎整个计算机的内存时。我编辑了我的答案(在一般情况下你应该坚持使用 32 位整数)。

以上是关于如何以及何时在 C# 中使用 :short?的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中何时使用抽象类以及何时使用接口 [重复]

在 C# 中使用 ReadBlock 方法时,如何判断何时到达文件末尾?

有人可以解释一下如何以及何时应该在 oracle 中使用 syscursor 吗? [关闭]

在 C# 中声明属性

为啥我们需要在 C# 中装箱和拆箱?

何时以及如何使用休眠二级缓存?