C#枚举数字值,将该值读取为字符串?
如果我理解正确,我有一个带有指定int值的枚举列表。我需要保持领先的0,所以有没有办法考虑这个值一个字符串,而不是int? 我的枚举C#枚举数字值,将该值读取为字符串?,c#,enums,C#,Enums,如果我理解正确,我有一个带有指定int值的枚举列表。我需要保持领先的0,所以有没有办法考虑这个值一个字符串,而不是int? 我的枚举 public enum CsvRowFormat { BeginningOfFile = 01, School = 02, Student = 03, EndOfFile = 04 } 目前,我正在读取这样的值,我发现效率很低 studentRowFormat.AppendF
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);
希望这有帮助遗憾的是,没有一种方法可以将值视为字符串而不是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);
希望这有帮助 “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()方法。