相关疑难解决方法(0)

有没有办法检查int是否是C#中的合法枚举?

我已经阅读了一些SO帖子,似乎缺少最基本的操作.

public enum LoggingLevel
{
    Off = 0,
    Error = 1,
    Warning = 2,
    Info = 3,
    Debug = 4,
    Trace = 5
};

if (s == "LogLevel")
{
    _log.LogLevel = (LoggingLevel)Convert.ToInt32("78");
    _log.LogLevel = (LoggingLevel)Enum.Parse(typeof(LoggingLevel), "78");
    _log.WriteDebug(_log.LogLevel.ToString());
}
Run Code Online (Sandbox Code Playgroud)

这没有例外,它很乐意存储78.有没有办法验证进入枚举的值?

c# enums

146
推荐指数
6
解决办法
5万
查看次数

如何检查枚举是否包含数字?

我有一个这样的枚举:

 public enum PromotionTypes
{
    Unspecified = 0, 
    InternalEvent = 1,
    ExternalEvent = 2,
    GeneralMailing = 3,  
    VisitBased = 4,
    PlayerIntroduction = 5,
    Hospitality = 6
}
Run Code Online (Sandbox Code Playgroud)

我想检查这个Enum是否包含我给出的数字.例如:当我给4时,Enum包含它,所以我想返回True,如果我给7,这个枚举中没有7,所以它返回False.我尝试了Enum.IsDefine,但它只检查String值.我怎样才能做到这一点?

.net c# enums

67
推荐指数
4
解决办法
6万
查看次数

检查整数类型是否属于枚举成员

我想检查一些整数类型属于(一个)枚举成员.

例如,

public enum Enum1
{
    member1 = 4,

    member2 = 5,

    member3 = 9,

    member4 = 0
}
Run Code Online (Sandbox Code Playgroud)

Enum1 e1 =(Enum1)4给我member1

Enum1 e2 =(Enum1)10没有给我什么,我想检查一下.

c#

28
推荐指数
2
解决办法
1万
查看次数

检查值是否在枚举范围内而不使用 IsDefined

关于如何转换枚举以及如果解析的值超出范围会发生什么,还有一些其他问题,例如:

public enum SomeTypes
{
    SomeType1 = 1,
    SomeType2 = 2,
    SomeType3 = 3
}

public class SomeClass
{
    ...
    var inRange = (SomeTypes) 1;
    var outOfRange = (SomeTypes) 5;
    ...
}
Run Code Online (Sandbox Code Playgroud)

超出范围不会产生任何错误。但是我发现如果您尝试使用超出范围的值序列化-反序列化枚举,您会遇到奇怪的错误。例如,我得到了类似的东西

“错误解析消息或超时”

这让我一直在寻找枚举超出范围之外的其他原因。

处理此问题的建议是通过Enum.IsDefined. 这似乎工作得很好,但是在msdn上有一个相当大胆的警告:

“不要使用 System.Enum.IsDefined(System.Type,System.Object) 进行枚举范围检查,因为它基于枚举的运行时类型,该类型可能会因版本而异。”

所以,我的问题是,我们可以安全地使用Enum.IsDefined或检查枚举的值是否超出范围而不使用Enum.IsDefined?

c# enums

5
推荐指数
3
解决办法
7237
查看次数

具有int值的枚举?

我想enum为可能的成绩做出贡献.这是一个有效的例子:

public enum Grade
{
    A, B, C, D, E, F
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望成绩是整数,比如

public enum Grade
{
    1, 2, 3, 4, 5
}
Run Code Online (Sandbox Code Playgroud)

为什么第一个工作但不是第二个?如何创建一个类似的变量只能取1-5的值(并且可以为空)?

c# enums

4
推荐指数
3
解决办法
921
查看次数

标签 统计

c# ×5

enums ×4

.net ×1