相关疑难解决方法(0)

3015
推荐指数
32
解决办法
128万
查看次数

静态只读与const

我已经阅读了各地conststatic readonly各个领域.我们有一些只包含常量值的类.用于我们系统中的各种事物.所以我想知道我的观察结果是否正确:

这些常量值是否应始终static readonly适用于所有公开的内容?并且仅const用于内部/受保护/私有值?

您有什么推荐的吗?我是否可能甚至不使用static readonly字段,而是使用属性?

c# constants

1349
推荐指数
14
解决办法
37万
查看次数

为什么使用static_cast <int>(x)而不是(int)x?

我听说该static_cast函数应该优先于C风格或简单的函数式转换.这是真的?为什么?

c++ casting

628
推荐指数
9
解决办法
33万
查看次数

如何从System.Enum转换为基本整数?

我想创建一个泛型方法,用于将任何System.Enum派生类型转换为其对应的整数值,而不进行转换,最好不解析字符串.

例如,我想要的是这样的:

// Trivial example, not actually what I'm doing.
class Converter
{
    int ToInteger(System.Enum anEnum)
    {
        (int)anEnum;
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.Resharper报告您无法将类型为"System.Enum"的表达式转换为"int"类型.

现在我已经提出了这个解决方案,但我宁愿提高效率.

class Converter
{
    int ToInteger(System.Enum anEnum)
    {
        return int.Parse(anEnum.ToString("d"));
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

c# enums type-conversion

88
推荐指数
4
解决办法
9万
查看次数

使用GetHashCode获取Enum int值

我有一个枚举

public enum INFLOW_SEARCH_ON
{
  ON_ENTITY_HANDLE = 0,         
  ON_LABEL = 1,                 
  ON_NODE_HANDLE = 2            
} // enum INFLOW_SEARCH_ON
Run Code Online (Sandbox Code Playgroud)

我必须使用这个枚举来在网格列中进行搜索

获取我正在使用的列索引

  MyEnumVariable.GetHashCode() 
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,或者我应该使用

  (short)MyEnumVariable
Run Code Online (Sandbox Code Playgroud)

我对使用GetHashCode()感到困惑.使用它有什么问题吗?

c# enums gethashcode

24
推荐指数
4
解决办法
2万
查看次数

获取Enum值的名称

我正在尝试创建一个函数,我们可以获得EnumValue的Namevalue

例如:

Get_Enum_ValueName(DayOfWeek, 0)
Run Code Online (Sandbox Code Playgroud)

......这将返回" 星期天 ".

但我的代码不起作用,它说类型没有定义:

Private Function Get_Enum_ValueName(Of T)(ByVal EnumName As T, ByVal EnumValue As Integer) As String
    Return DirectCast([Enum].Parse(GetType(EnumName), EnumValue ), EnumName).ToString
End Function
Run Code Online (Sandbox Code Playgroud)

.net vb.net enums visual-studio

18
推荐指数
3
解决办法
3万
查看次数

枚举到最佳实践

我不能在两种转换方法之间进行选择.从枚举转换为int的最佳实践是什么?

1:

public static int EnumToInt(Enum enumValue)
{
    return Convert.ToInt32(enumValue);
}
Run Code Online (Sandbox Code Playgroud)

2:

public static int EnumToInt(Enum enumValue)
{
    return (int)(ValueType)enumValue;
}
Run Code Online (Sandbox Code Playgroud)

c# enums

12
推荐指数
1
解决办法
1355
查看次数

C#确保有效的枚举值 - Futureproof方法

我正在编写一些带有基于Enum值的简单switch语句的代码.在我看来,在将来某个时候开发人员可能会添加一个新值,所以我在运行时包含了一个默认方法来捕获它并抛出异常.但是我意识到每次输入这样的逻辑时我都应该这样做,并且我只在运行时看到这些问题而不是编译时间.
我想知道是否有一些我可以添加的代码让编译器告诉开发人员他们需要在更新枚举值的情况下更新某些方法 - 除了向枚举本身添加注释之外?

例如(以下示例纯粹是理论上的;我选择了开发生命周期中的状态,以确保它对大多数人来说是熟悉的).

public enum DevelopmentStatusEnum
{
    Development
    //, QA //this may be added at some point in the future (or any other status could be)
    , SIT
    , UAT
    , Production
}

    public class Example
    {
        public void ExampleMethod(DevelopmentStatusEnum status)
        {
            switch (status)
            {
                case DevelopmentStatusEnum.Development: DoSomething(); break;
                case DevelopmentStatusEnum.SIT: DoSomething(); break;
                case DevelopmentStatusEnum.UAT: DoSomething(); break;
                case DevelopmentStatusEnum.Production: DoSomething(); break;
                default: throw new StupidProgrammerException(); //I'd like the compiler to ensure that this line never runs, even if …
Run Code Online (Sandbox Code Playgroud)

.net compiler-construction enums c#-4.0

8
推荐指数
1
解决办法
4435
查看次数

如何从标志枚举中获取数值?

可能重复:
枚举返回int值
如何从枚举中获取数值?

这不是这些的重复,感谢阅读问题模式

假设我选择了许多标志枚举项:

[Flags]
public enum Options
{
    None = 0,
    Option_A = 1,
    Option_B = 2,
    Option_C = 4,
    Option_D = 8,
}

Options selected = Options.Option_A | Options.Option_B;
Run Code Online (Sandbox Code Playgroud)

selected应该对应于3(即2 + 1)

我怎样才能把它变成一个int?

我已经看到了selected将ToString()和split()转换为每个选项的示例,例如

"Option_A | Option_B" --> { "Option_A", "Option_B" },
Run Code Online (Sandbox Code Playgroud)

然后重新组合成各自的Enum,并从中获取值,但它有点凌乱.是否有更直接的方法来获得这些值的总和?

c# enums enum-flags

7
推荐指数
1
解决办法
4266
查看次数

如何在Enumeration中获取枚举值的int

如果我有值:"dog"和枚举:

public enum Animals
{
  dog = 0 ,
  cat = 1 ,
  rat = 2
}
Run Code Online (Sandbox Code Playgroud)

我怎么能从动物的价值"狗"得到0?

编辑:

我想知道是否有像索引这样的索引.更常见的是:如何获取字符串值的整数.

c# enums enumeration

6
推荐指数
3
解决办法
753
查看次数