c# – ‘Enum:Type’与’Enum’之间有什么区别?

前端之家收集整理的这篇文章主要介绍了c# – ‘Enum:Type’与’Enum’之间有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图了解一般关于Enums的一些事情以及他们如何与Chars特别合作.以下是我工作的例子:
public enum AuditInteractionTypes
{
    Authorized = 'A',Created = 'C',Revised = 'R',Extracted = 'E',Deleted = 'D'
}

首先,声明它们枚举AuditInteractionTypes或枚举AuditInteractionTypes:char之间的区别是什么

其次,我看过很多关于尝试使用带有字符的枚举以及如何“使”它来回工作的帖子.可能是愚蠢的问题,但为什么我不能简单地作为一个字符串来回走动.

因此,例如,授权=“A”.

我使用Linq To sql作为我的DAL,如果这很重要,我希望,这是一个更广泛的问题,不是特定于我的环境.

解决方法

它规定了用于存储枚举的基础类型.

当您使用枚举而没有任何其他内容时,它使用int作为底层存储类型.

当您使用enum:< type>时,它使用该类型作为底层存储类型.

在你的情况下,你正在尝试使用char类型的基础类型,但这是无效的,根据the C# reference

The approved types for an enum are byte,sbyte,short,ushort,int,uint,long,or ulong.

如果要存储char值,则有两个选项.

您可以使用基础类型ushort(它是一个无符号的16位整数,如char),如下所示:

public enum AuditInteractionTypes : ushort
{
    Authorized = 'A',Deleted = 'D'
}

char有一个隐式转换为ushort,所以上面的工作.此外,您可以轻松地比较两者.

如果you want to use a string as the value那么我会推荐类似枚举的类,如下所示:

public static class AuditInteractionTypes
{
    // You can make these static readonly if they are likely to change.
    public const string Authorized = "A";
    public const string Created = "C";
    public const string Revised = "R";
    public const string Extracted = "E";
    public const string Deleted = "D";
}

然后,这个类看起来与enum和代码看起来相同.

注意,任何类型都可以使用相同的技巧,但通常这些类型应该是完全不可变的. string很好地填充了这个准则,完全不可变(如果你正确设计了它们,就像大多数系统值类型和其他值类型一样).

原文链接:https://www.f2er.com/csharp/101140.html

猜你在找的C#相关文章