C# 中类型转换的最佳实践是什么?
int temp=System.ConvertToInt32(Request.QueryString["Id"]);
if (temp!=null)
{ // logic goes here }
如果 Id 不知何故变成'abc',这将失败
除了 if else 语句(例如使用单行三元运算符)之外,请建议使用三元运算符和其他单行语句。另外,你们更喜欢 TryParse 而不是 Convert & 为什么这样?有你的发言权。
最佳答案
TryParse
具有明显的优势,即在失败的情况下它将返回 false 而不是抛出异常。
标准模式是这样的:
int value;
if (int.TryParse(Request.QueryString["Id"], out value))
{
// Use value
}
else
{
// Do whatever you want on failure
}
现在,还值得记住的是,您可以为 int.TryParse
提供一个 IFormatProvider
和一个 NumberStyles
- 例如,您可以我们希望将 CultureInfo.InvariantCulture
指定为 IFormatProvider
如果这确实是一个自动生成的 ID(而不是用户输入的 ID)。
如果你想有效地拥有“默认值”,你可以像这样编写一个辅助方法:
public static int? NullableTryParseInt32(string text)
{
int value;
return int.TryParse(text, out value) ? value : (int?) null;
}
然后你可以像这样使用它:
int value = NullableTryParseInt32(text) ?? 10;
当然,您也可以只编写一个采用默认值的方法:)
关于c# - 安全解析字符串的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456909/