gpt4 book ai didi

c# - VB 和 C# 之间的枚举行为

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:39 25 4
gpt4 key购买 nike

我搜索并尝试了很多东西,但我并不是很满意。

在将一个旧项目从 VB.Net 转换为 C# 时,我发现这两种语言之间的行为非常不同,如果不加以处理,就会破坏 C# 中的逻辑。

考虑这样一个枚举:

public enum TestEnum
{
Val1 = 1,
Val2 = 2
}

我在 VB.Net 中有这段代码

// Will contain 1
txthMyHiddenField.Value = TestEnum1.Val1

还有

// Will contain ~/Something?var=1
Dim Url As String = "~/Something?var=" & TestEnum1.Val1

在 C# 中,第一种情况有 Val1,第二种情况有 "~/Something?var=Val1"

到目前为止,我可以在不重新设计大量代码的情况下提出的解决方案是遍历所有地方并执行以下操作:

= myEnum.ToString("d");

// Or

= ((int)myEnum).ToString();

// Or an extension.

我也考虑过创建一个枚举“类”,但我必须更改所有 switch 语句,这是一个更糟糕的解决方案。

我错过了什么吗?有更清洁的方法吗?

最佳答案

为什么不简单

var url = "~/Somethimg?var=" + (int)myEnum;

对于它的值(value),也许这个扩展有帮助:

public static class EnumExtensions
{
public static int AsInt<TEnum>(this TEnum enumType) where TEnum : struct, IConvertible
{
if (!typeof(TEnum).IsEnum)
throw new ArgumentException("TEnum must be an enum type");
return ((IConvertible)enumType).ToInt32(null);
}
}

var url = "~/Somethimg?var=" + myEnum.AsInt();

关于c# - VB 和 C# 之间的枚举行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504915/

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