文字列補間によるオーバーロードされた文字列メソッド

nothrow

文字列補間がメソッドのオーバーロードをstringではなく優先するのはなぜIFormattableですか?

次のことを想像してみてください。

static class Log {
    static void Debug(string message);
    static void Debug(IFormattable message);
    static bool IsDebugEnabled { get; }
}

非常に高価なオブジェクトがありますToString()以前、私は次のことをしました:

if (Log.IsDebugEnabled) Log.Debug(string.Format("Message {0}", expensiveObject));

ここで、IsDebugEnabledロジックを内部に配置しDebug(IFormattable)、必要な場合にのみメッセージ内のオブジェクトに対してToString()を呼び出したいと思いました

Log.Debug($"Message {expensiveObject}");

ただし、これはDebug(string)過負荷を呼び出します

ローリング

これは、Roslynチームによる意図的な決定です。

私たちは一般的に、ライブラリは、さまざまなことを行うメソッドに対してさまざまなAPI名で記述されると考えています。したがって、FormattableStringとStringの間のオーバーロード解像度の違いは重要ではないため、stringが優先される可能性があります。したがって、補間された文字列は文字列であるという単純な原則に固執する必要があります。話の終わり。

これについてはリンクでさらに議論されていますが、結論としては、異なるメソッド名を使用することを期待しています。

一部のライブラリAPIは、より安全または高速であるため、消費者がFormattableStringを使用することを本当に望んでいます。文字列を受け取るAPIとFormattableStringを受け取るAPIは実際には異なることを行うため、同じ名前でオーバーロードしないでください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

メソッドのグローバル文字列変数補間

分類Dev

補間なしで `p`メソッドを使用して配列に表示されるエスケープ文字

分類Dev

補間なしで `p`メソッドを使用して配列に表示されるエスケープ文字

分類Dev

文字列メソッドのオーバーロード

分類Dev

代替によるオーバーロードされたメソッド値

分類Dev

アップロードメソッドが文字列「アップロードされたファイルのURL」を返すようにする

分類Dev

補間された文字列をパラメータとしてメソッドに渡すことは可能ですか?

分類Dev

オーバーロードされた文字列の使用

分類Dev

Julia-コマンドでフォーマットされた文字列補間

分類Dev

ユーザー入力によるオーバーロードされたメソッド(ReadLine())

分類Dev

動的に作成された列挙型のメソッドオーバーロード

分類Dev

java.util.Arrays.toStringメソッドはScalaの文字列に対してオーバーロードされません

分類Dev

文字列補間を使用して定数を挿入することによる実行時のオーバーヘッドはありますか?

分類Dev

オーバーロードされたメソッドに配列値を渡すにはどうすればよいですか?

分類Dev

文字列をアクションメソッドのオーバーロードに渡す

分類Dev

forループで使用される文字列join()メソッド

分類Dev

ファクトリユーザーが列挙型に基づいて間違ったテンプレート化またはオーバーロードされたメソッドを呼び出さないようにするにはどうすればよいですか?

分類Dev

メソッドに渡されたスキャナー文字列からデータを抽出する

分類Dev

Datadogダッシュボードでクエリステートメント(文字列補間)を修正するにはどうすればよいですか?

分類Dev

Javaのあるメソッドから別のオーバーライドされたメソッドに文字列を呼び出す関数はありますか?

分類Dev

静的メソッド内でローカライズされた文字列を使用する方法

分類Dev

Javaオーバーロードおよびオーバーライドされたメソッド

分類Dev

オーバーライドおよびオーバーロードされたメソッド

分類Dev

オーバーロードおよびオーバーライドされたメソッドのClojuregen-class

分類Dev

python / jinga2バックエンドから送信された補間文字列で無効なトークンを取得する

分類Dev

クラスの初期化中に文字列にエンコードされた動的メソッドを追加するにはどうすればよいですか?

分類Dev

補間された文字列フォーマットの問題

分類Dev

メソッドのオーバーロードでパラメータとして文字列を渡す

分類Dev

laravel5 pluck(lists)メソッドで作成された場合、配列キーに文字列を追加するにはどうすればよいですか?

Related 関連記事

  1. 1

    メソッドのグローバル文字列変数補間

  2. 2

    補間なしで `p`メソッドを使用して配列に表示されるエスケープ文字

  3. 3

    補間なしで `p`メソッドを使用して配列に表示されるエスケープ文字

  4. 4

    文字列メソッドのオーバーロード

  5. 5

    代替によるオーバーロードされたメソッド値

  6. 6

    アップロードメソッドが文字列「アップロードされたファイルのURL」を返すようにする

  7. 7

    補間された文字列をパラメータとしてメソッドに渡すことは可能ですか?

  8. 8

    オーバーロードされた文字列の使用

  9. 9

    Julia-コマンドでフォーマットされた文字列補間

  10. 10

    ユーザー入力によるオーバーロードされたメソッド(ReadLine())

  11. 11

    動的に作成された列挙型のメソッドオーバーロード

  12. 12

    java.util.Arrays.toStringメソッドはScalaの文字列に対してオーバーロードされません

  13. 13

    文字列補間を使用して定数を挿入することによる実行時のオーバーヘッドはありますか?

  14. 14

    オーバーロードされたメソッドに配列値を渡すにはどうすればよいですか?

  15. 15

    文字列をアクションメソッドのオーバーロードに渡す

  16. 16

    forループで使用される文字列join()メソッド

  17. 17

    ファクトリユーザーが列挙型に基づいて間違ったテンプレート化またはオーバーロードされたメソッドを呼び出さないようにするにはどうすればよいですか?

  18. 18

    メソッドに渡されたスキャナー文字列からデータを抽出する

  19. 19

    Datadogダッシュボードでクエリステートメント(文字列補間)を修正するにはどうすればよいですか?

  20. 20

    Javaのあるメソッドから別のオーバーライドされたメソッドに文字列を呼び出す関数はありますか?

  21. 21

    静的メソッド内でローカライズされた文字列を使用する方法

  22. 22

    Javaオーバーロードおよびオーバーライドされたメソッド

  23. 23

    オーバーライドおよびオーバーロードされたメソッド

  24. 24

    オーバーロードおよびオーバーライドされたメソッドのClojuregen-class

  25. 25

    python / jinga2バックエンドから送信された補間文字列で無効なトークンを取得する

  26. 26

    クラスの初期化中に文字列にエンコードされた動的メソッドを追加するにはどうすればよいですか?

  27. 27

    補間された文字列フォーマットの問題

  28. 28

    メソッドのオーバーロードでパラメータとして文字列を渡す

  29. 29

    laravel5 pluck(lists)メソッドで作成された場合、配列キーに文字列を追加するにはどうすればよいですか?

ホットタグ

アーカイブ