作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于如何转换枚举以及如果解析的值超出范围会发生什么,还有一些其他问题,例如:
public enum SomeTypes
{
SomeType1 = 1,
SomeType2 = 2,
SomeType3 = 3
}
public class SomeClass
{
...
var inRange = (SomeTypes) 1;
var outOfRange = (SomeTypes) 5;
...
}
"error parsing the message or timeout exceeded"
Enum.IsDefined
.这似乎工作得很好,但是在
msdn 上有这个相当大胆的警告:
"Do not use System.Enum.IsDefined(System.Type,System.Object) for enumeration range checks as it is based on the runtime type of the enumeration, which can change from version to version."
Enum.IsDefined
或者在不使用
Enum.IsDefined
的情况下检查枚举值是否超出范围的正确方法是什么? ?
最佳答案
使用 Enum.GetValues()
:
public bool IsInRange(int value){
var values = Enum.GetValues(typeof(SomeTypes)).Cast<int>().OrderBy(x => x);
return value >= values.First() && value <= values.Last();
}
public bool IsDefined(int value){
var values = Enum.GetValues(typeof(SomeTypes)).Cast<int>().OrderBy(x => x);
return values.Contains(value);
}
关于c# - 检查值是否在枚举范围内而不使用 IsDefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27059797/
我是一名优秀的程序员,十分优秀!