C# 如何实现一系列预定义的常量“;“国家”;财产的所有权?
我有一个属性C# 如何实现一系列预定义的常量“;“国家”;财产的所有权?,c#,types,constants,C#,Types,Constants,我有一个属性LegalCaseStatus。我的目的是使属性接受预定义的批准值范围。该范围必须在我的程序中可见且保持不变。下面是列表的一个示例: Plaintiff Defendant Third Party Debitor Creditor Petitioner 因此,我能想到的最好方法是声明一个静态类,并用相应的常量填充它: public static class Participants { public const byte Piaintiff = 0,
LegalCaseStatus
。我的目的是使属性接受预定义的批准值范围。该范围必须在我的程序中可见且保持不变。下面是列表的一个示例:
Plaintiff
Defendant
Third Party
Debitor
Creditor
Petitioner
因此,我能想到的最好方法是声明一个静态类,并用相应的常量填充它:
public static class Participants
{
public const byte
Piaintiff = 0,
Defendant = 1,
ThirdParty = 2,
Debitor= 3,
Creditor = 4,
Petitioner = 5;
}
因此,在使用名称空间后,我只需执行以下操作:
public byte LegalCaseStasus = Plaintiff;
唯一的问题是,因为它只是一个byte
成员,所以它将接受任何byte
成员:
LegalCaseStatus = 99; // ok
LegalCaseStatus = SomeOtherByteConstant; // ok
如何保护会员法律地位
?我的解决方案通常正确吗?您可以使用枚举-枚举是一个特殊的“类”,表示一组常量(不可更改/只读变量)。听起来就像你在问题中描述的:
public enum Participants
{
Piaintiff = 0,
Defendant = 1,
ThirdParty = 2,
Debitor = 3,
Creditor = 4,
Petitioner = 5
}
在枚举定义之后,您可以完全按照您想要的方式使用它:
Participants LegalCaseStasus = Participants.ThirdParty;
LegalCaseStasus = 99; // ERROR
byte underlying_value = (byte)LegalCaseStasus; // value == 2
注意:
enum
的基础值是int
!当您强制转换到byte
时,您需要确保没有超过byte
限制的预定义值。听起来像是枚举的完美用例?您听说过枚举吗。您可以很容易地预定义一组基础整数数字类型的命名常量。您可以使用枚举,正如其他人所说,但警告一句-它们仍然不会阻止在枚举中分配未定义的值。因此,如果需要,您仍然应该在属性设置程序中抛出ArgumentOutOfRangeException
。@IgorCheglakov此语法执行强制转换。Cast是一种将值从一种数据类型转换为另一种数据类型的方法。在这种特定情况下,我们将参与者
类型的变量强制转换为int
。