将字符串转换为int(或其他东西),是否有首选方法
本文关键字:是否 方法 转换 字符串 int 其他 | 更新日期: 2023-09-27 18:33:04
有时我想知道,在将字符串转换为其他类型的类型(例如 int32)时,是一种方式比另一种方式更好,还是只是品味问题?
Convert.ToInt32("123")
或
Int32.Parse("123")
或
其他方式?
如果这个问题中不是有效的 int,则不考虑这种情况。
Convert.ToInt32 实际上是通过以下方式实现的......
int.Parse(value, CultureInfo.CurrentCulture);
。这与你所说的替代方案相同,只是它考虑了区域性设置。国际。解析方法本身是通过以下方式实现的...
Number.ParseInt32(s, NumberStyles.Integer, NumberFormatInfo.GetInstance(provider));
。其中 Number 是不能直接调用的内部类。Number.ParseInt32 方法用以下属性标记...
[MethodImpl(MethodImplOptions.InternalCall)]
。表明它是在 CLR 本身内部实现的。
Conver.ToInt32
和 Int32.Parse
之间的主要区别在于如何处理字符串null
。 在这种情况下,Convert.ToInt32
返回默认值:
public static int ToInt32(string value)
{
if (value == null)
return 0;
return Int32.Parse(value, CultureInfo.CurrentCulture);
}
我不喜欢这样。我认为只有"0"
应该解析为0
.此行为最初是为 Visual Basic 程序员设计的:
这是一组转换方法,供从 Visual Basic 6 迁移到 Visual Basic .NET 的程序员使用,它反映了 现有的 Visual Basic 6 转换方法。假设是 C# 程序员会更习惯于转换操作员,而 Visual Basic传统上使用类型的转换方法 转换。
所以,作为非VB程序员,我会选择Int32.Parse
和Int32.TryParse
。
从字符串转换为 int 时,我总是使用 int。尝试解析。因为您并不总是确定是否可以将字符串转换为 int。喜欢这个:
string temp="222";
int intValue;
if(int.TryParse(temp,out intValue))
{
//Something
}
正如V4Vendetta建议的那样,最好使用TryParse来避免与转换相关的异常。
int result = 0;
a = "3";
string b = "b";
string c = "2147483648"; //int32 max value + 1
int.TryParse(a, out result); // returns true result=3
int.TryParse(b, out result); // returns false result=0
int.TryParse(c, out result); // returns false result=0