3

ケース 1: 次の方法で型を変換できます .....

  1. 最初の方法

        int someInt = 10;
        double someDouble = (double) someInt;
    
  2. 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 は常に両方のケースで 2 番目の方法のような提案をしてくれるので、この質問をしています。どれに従えばいいのかわからない。

4

2 に答える 2

3
  1. ケース 1 - 両方の方法が同じで、最初の方法が少し高速です。
  2. ケース 2 - 1 番目の方法は危険です。引数としてint.ToString()使用するためです (したがって、結果はコンピューターによって異なる可能性があります)。Culture.CurrentCulture

次のように:

someInt.ToString() == someInt.ToString(CultureInfo.CurrentCulture);
于 2013-06-17T06:39:14.863 に答える
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();
}
于 2013-06-17T06:39:41.033 に答える