C#枚举数字值,将该值读取为字符串?

C#枚举数字值,将该值读取为字符串?,c#,enums,C#,Enums,如果我理解正确,我有一个带有指定int值的枚举列表。我需要保持领先的0,所以有没有办法考虑这个值一个字符串,而不是int? 我的枚举 public enum CsvRowFormat { BeginningOfFile = 01, School = 02, Student = 03, EndOfFile = 04 } 目前,我正在读取这样的值,我发现效率很低 studentRowFormat.AppendF

如果我理解正确,我有一个带有指定int值的枚举列表。我需要保持领先的0,所以有没有办法考虑这个值一个字符串,而不是int? 我的枚举

    public enum CsvRowFormat
    {
        BeginningOfFile = 01,
        School = 02,
        Student = 03,
        EndOfFile = 04
    }
目前,我正在读取这样的值,我发现效率很低

studentRowFormat.AppendFormat("0{0}",(int)TransactionFile.CsvRowFormat.Student).ToString();
Int32已经完成。所以最简单的方法是这样的:

studentRowFormat.Append(((int)TransactionFile.CsvRowFormat.Student).ToString("D2"));
在枚举声明中不需要前导的0。

Int32有。所以最简单的方法是这样的:

studentRowFormat.Append(((int)TransactionFile.CsvRowFormat.Student).ToString("D2"));
在枚举声明中不需要前导0。

可以使用
“{0:D2}”
作为格式字符串。它将用前导零填充字符串,直到其长度为2

您正在使用的
enum
只是存储您正在分配的数值,而不是字符串值,因此它不会保留您提供前导零的信息。原生
enum
类型不能由字符串支持;它们必须由整数值支持。您可以创建自己的自定义类型,它“看起来”像是一个字符串支持的枚举,但是使用这种解决方案要比在现有整数
enum
中使用更合适的格式字符串费劲得多。您可以使用
“{0:D2}”
作为格式字符串。它将用前导零填充字符串,直到其长度为2


您正在使用的
enum
只是存储您正在分配的数值,而不是字符串值,因此它不会保留您提供前导零的信息。原生
enum
类型不能由字符串支持;它们必须由整数值支持。您可以创建自己的自定义类型,它看起来像是一个字符串支持的枚举,但是使用这样的解决方案将比使用现有的整数<代码> EnUM<代码>更合适的格式字符串更费力。

< P>不幸的是,没有一种方法将值视为字符串而不是int。您可以使用其他答案提供的格式选项,也可以编写一个结构,使代码更加简洁。因为我不知道您使用枚举的原因,我觉得我必须指出结构有一些行为上的差异。下面是一个将结构用于此解决方案的示例:

public struct CsvRowFormat
{
    public string Value { get; private set; }
    private CsvRowFormat(string value) : this()
    {
        Value = value;
    }

    public static BeginningOfFile { get { return new CsvRowFormat("01"); } }
    public static School { get { return new CsvRowFormat("02"); } }
    public static Student { get { return new CsvRowFormat("03"); } }
    public static EndOfFile { get { return new CsvRowFormat("04"); } }
}
示例用法:

studentRowFormat.Append(TransactionFile.CsvRowFormat.Student);

希望这有帮助
public struct CsvRowFormat
{
    public string Value { get; private set; }
    private CsvRowFormat(string value) : this()
    {
        Value = value;
    }

    public static BeginningOfFile { get { return new CsvRowFormat("01"); } }
    public static School { get { return new CsvRowFormat("02"); } }
    public static Student { get { return new CsvRowFormat("03"); } }
    public static EndOfFile { get { return new CsvRowFormat("04"); } }
}
示例用法:

studentRowFormat.Append(TransactionFile.CsvRowFormat.Student);

希望这有帮助

“0”+(int)TransactionFile.CsvRowFormat。Student@kenny他已经说过他用的就是这个,看看这个。如果您使用的
{0:D2}
可以输出任何带前导零的1位值。@Servy实际上他使用的是Format()而不是concatenating@kenny这正是该格式要做的…“0”+(int)TransactionFile.CsvRowFormat。Student@kenny他已经说过他用的就是这个,看看这个。如果您使用的
{0:D2}
可以输出任何带前导零的1位值。@Servy实际上他使用的是Format()而不是concatenating@kenny这正是格式要做的…您可以在格式字符串中使用数字格式,而不是在
int
上使用
ToString
。确实可以,但是我发现很多人不知道可格式化的ToString()方法,我想其他人会扩展AppendFormat()方法。你可以在格式字符串中使用数字格式,而不是在
int
上使用
ToString
。你当然可以,但是我发现很多人不知道可格式化的ToString()方法,我想其他人会扩展AppendFormat()方法。