gpt4 book ai didi

c# - 值得将枚举转换为它的值的场景

转载 作者:行者123 更新时间:2023-11-30 18:50:32 25 4
gpt4 key购买 nike

我的一个 Windows 应用程序中有枚举,如下所示:

private enum ModificationType
{
Insert = 0,
Update = 1,
Delete = 2
}

我有以下功能:

private void UpdateDatabaseTransactions(ModificationType _modifcationType)
{
int modType = (int)_modifcationType;
if (modType == 0) {...}
if (modType == 1) {...}
if (modType == 2) {...}

我也可以像下面这样使用它:

if (_modifcationType == ModificationType.Insert) {...}
if (_modifcationType == ModificationType.Update) {...}
if (_modifcationType == ModificationType.Delete) {...}
}

两者之间有什么区别,在哪些情况下我必须对值和用途进行类型转换,使用上述任何一种或两者是否有任何性能提升?

最佳答案

当您决定稍后更改 ModificationType 枚举时会发生什么?例如:

private enum ModificationType
{
Insert = 0,

/* Oops, need a special insert type here */
InsertSpecial = 1,

Update = 2,
Delete = 3
}

不可否认,这是一个人为的例子。 (但肯定不是不可能 - 假设您的 enum 用于引用一些引入重大更改的外部依赖项,比如 C API。)

但如果您按值引用这些枚举类型,则必须追踪它们的所有引用。您是否想浏览您的代码,试图弄清楚数字 3 是否用于引用该枚举或其他一些随机常量?

相反,您应该使用 ModificationType.Delete,这样您就不必担心这些问题。毕竟,这就是 enum 类型存在的原因。

使用 ModificationType.Delete 而不是 4、5、6 或任何它可能碰巧的值没有性能损失。

关于c# - 值得将枚举转换为它的值的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com