在C#中进行类型转换的更好方法

时间:2013-06-17 06:27:54

标签: c# resharper

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

  1. 第一种方式

        int someInt = 10;
        double someDouble = (double) someInt;
    
  2. 第二种方式相同

        int someInt = 10;
        double someDouble = Convert.ToDouble(someInt);
    
  3. 案例2:我们可以通过以下方式将某些事物转换为字符串.......

    1. 第一种方式

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

          int someInt = 10;
          string someString =  someInt.ToString(CultureInfo.InvariantCulture);
      
    3. 现在我的问题是哪一个好?我问这个问题是因为ReSharper总是给我这样的建议,就像两种情况一样。我不应该跟随哪一个。

2 个答案:

答案 0 :(得分:3)

  1. 案例1 - 两种方式都相同,第一种方式更快一点。
  2. 案例2 - 第一种方式可能很危险,因为int.ToString()使用Culture.CurrentCulture作为参数(因此因计算机而不同的结果):
  3. 如:

    someInt.ToString() == someInt.ToString(CultureInfo.CurrentCulture);
    

答案 1 :(得分:0)

转换变量只是调用显式运算符方法它是语法技巧。通过方法进行转换和转换完全相同或应该是相同的。不同的是特定类如何选择实现它。你可以使一个转换操作符处理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();
}
相关问题