[英]C# Enum With Number Value, Reading That Value as String?
如果我理解正確,我有一個分配了int值的枚舉列表。 我需要保持前導0,有沒有辦法將此值視為字符串而不是int?
我的枚舉
public enum CsvRowFormat
{
BeginningOfFile = 01,
School = 02,
Student = 03,
EndOfFile = 04
}
目前,我正在讀取像這樣的值,但發現效率低下
studentRowFormat.AppendFormat("0{0}",(int)TransactionFile.CsvRowFormat.Student).ToString();
Int32有一個ToString(),它采用格式string 。 因此,最簡單的方法是這樣的:
studentRowFormat.Append(((int)TransactionFile.CsvRowFormat.Student).ToString("D2"));
您在枚舉聲明中不需要前導0。
您可以使用"{0:D2}"
作為格式字符串。 它將用前導零填充字符串,直到長度為2。
您使用的enum
只是存儲分配值的數字值,而不是字符串值,因此它不保留有關您提供前導零的事實的知識。 本地enum
類型不能由字符串支持; 它們必須以整數值作為后盾。 您可以創建自己的自定義類型,使其看起來像是由字符串支持的枚舉,但是使用這種解決方案將比僅在現有的整數enum
使用更合適的格式字符串花費更多的精力。
不幸的是,沒有一種方法可以將值視為字符串而不是int。 請參見C#枚舉參考 。 您可以使用其他答案提供的格式設置選項,也可以編寫一個結構,使您的代碼更簡潔。 因為我不知道您使用枚舉的原因,所以我必須指出結構在行為上有所不同。 這是為該解決方案使用結構的示例:
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);
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.