c#中更好的类型转换方法

本文关键字:类型 转换方法 更好 | 更新日期: 2023-09-27 18:18:44

情况1:我们可以通过以下方式转换类型.....

    第一种方法
  1.     int someInt = 10;
        double someDouble = (double) someInt;
    
  2. 同样的道理

        int someInt = 10;
        double someDouble = Convert.ToDouble(someInt);
    

案例2:我们可以通过以下方式将一些东西转换为字符串.......

  1. 第一步

        int someInt = 10;
        string someString =  someInt.ToString();
    
  2. 第二种方式
        int someInt = 10;
        string someString =  someInt.ToString(CultureInfo.InvariantCulture);
    

现在我的问题是哪一个好?我之所以问这个问题,是因为ReSharper总是给我类似第二种方法的建议。我不知道该听哪一个。

c#中更好的类型转换方法

  1. 情况1 -两种方式相等,第一种方式稍微快一点。
  2. 情形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();
}