我可以检查格式说明符是否对给定的数据类型有效吗?

如果我(在.NET / C#中)例如long类型的变量我可以将它转换为格式化的字符串,如:

 long value = 12345; string formattedValue = value.ToString("D10"); // returns "0000012345" 

如果我指定的格式对该类型无效,我会得到一个例外:

 long value = 12345; string formattedValue = value.ToString("Q10"); // throws a System.FormatException 

问题:在应用该格式之前,有没有办法检查格式说明符是否有效(除了尝试格式化并捕获exception),例如long.IsFormatValid("Q10")

感谢帮助!

我没试过这个,但我认为你可以创建一个扩展方法,例如:

 namespace ExtensionMethods { public static class MyExtensions { public static bool IsFormatValid(this T target, string Format) where T : IFormattable { try { target.ToString(Format, null); } catch { return false; } return true; } } } 

然后你可以申请:

 long value = 12345; if (value.IsFormatValid("Q0")) { ... 

我没有建议检查,而是建议开发人员阅读文档以找出允许的位置。

但是,如果出现大量拼写错误的问题,我想您可以根据该页面上的信息编写查找表。 虽然这可能只会给你一种虚假的安全感,因为你会让人们在有效的格式说明符之间犯错(写一个f但是他们的意思是e等)。

编辑删除关于TryParse / Parse的混淆位。