c#中更好的类型转换方法
本文关键字:类型 转换方法 更好 | 更新日期: 2023-09-27 18:18:44
情况1:我们可以通过以下方式转换类型.....
- 第一种方法
int someInt = 10; double someDouble = (double) someInt;
同样的道理
int someInt = 10; double someDouble = Convert.ToDouble(someInt);
案例2:我们可以通过以下方式将一些东西转换为字符串.......
-
第一步
int someInt = 10; string someString = someInt.ToString();
-
第二种方式
int someInt = 10; string someString = someInt.ToString(CultureInfo.InvariantCulture);
现在我的问题是哪一个好?我之所以问这个问题,是因为ReSharper总是给我类似第二种方法的建议。我不知道该听哪一个。
- 情况1 -两种方式相等,第一种方式稍微快一点。
- 情形2 -第一种方法可能是危险的,因为
int.ToString()
使用Culture.CurrentCulture
作为参数(因此结果可能因计算机而异):
:
someInt.ToString() == someInt.ToString(CultureInfo.CurrentCulture);
强制转换变量只是调用显式操作符方法——这是语法上的诡计。通过一个方法进行类型转换和转换是完全相同的,或者应该是完全相同的。不同的是特定类选择如何实现它。您可以让强制转换操作符处理null或不处理null,这取决于您。
考虑下面我创建的自定义类。考虑一下,在强制转换中发生的所有事情都可以在方法中相同地完成。这只是格式化的魔法。
//explicitly convert int to my class
public static explicit operator MyClass(int t)
{
return new MyClass();
}
//static method to convert int to my class
public static MyClass ToMyClass()
{
return new MyClass();
}