C# 无效的枚举值
所以我有一种类型:C# 无效的枚举值,c#,enums,asp.net-web-api2,parameterbinding,C#,Enums,Asp.net Web Api2,Parameterbinding,所以我有一种类型: public enum Types { aaa= 1, bbb= 2, ccc= 4 } public class RequestPayload { public int Prop1 { get; set; } public string Prop2 { get; set; } public Types Prop3 { get; set; } } 我正在和Postman一起测试一个web api public MyType
public enum Types
{
aaa= 1,
bbb= 2,
ccc= 4
}
public class RequestPayload
{
public int Prop1 { get; set; }
public string Prop2 { get; set; }
public Types Prop3 { get; set; }
}
我正在和Postman一起测试一个web api
public MyType Create([FromBody] RequestPayloadpayload)
{
return null
}
以下是我的邮递员设置:
那么,当我的枚举没有此值时,为什么在控制器中我的对象的属性
Prop3
为6666呢?我对“postman”一词一无所知,但我假设您会惊讶于可以将1、2或4以外的int值分配给Prop3
。原因是——这正是枚举在C中的工作方式,因为在后台,枚举类型的字段被转换为int
(或者不管枚举的底层类型是什么),任何int
值都可以合法地存储在其中
发件人:
Days
类型的变量可以指定以下范围内的任何值
基础类型;这些值不限于指定的
常数
这可能是为了避免对“已定义”的值进行昂贵的运行时检查,但也可能有其他体系结构原因(我想到的是使用“标志”枚举)。可能重复事实上,我很惊讶我可以将其他值分配给mu enum。
enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};