[解決済み] 拡張機能のメリットについて教えてください。[終了しました]
2023-05-25 14:12:39
質問
C# の信者でない人が、拡張メソッドの目的は何なのかと尋ねてきました。私は、すでに定義されているオブジェクトに新しいメソッドを追加できること、特に、元のオブジェクトのソースを所有していない/制御していない場合にそうなることを説明しました。
彼は、「なぜ自分自身のクラスにメソッドを追加しないのか」という質問をしました。私の一般的な回答は、それはツールベルトの別のツールであり、彼の回答は、それはツールの役に立たない無駄であるというものです...しかし、私はより多くの"賢明な"答えを得ようと思いました。
自分のクラスに追加されたメソッドを使うことができなかった(あるいは使うべきではなかった)拡張メソッドを使用したシナリオは何でしょうか?
どのように解決するのですか?
基本的な型に拡張メソッドを追加すると、インテリセンスですぐに取得できるようになります。
私は、フォーマットプロバイダを ファイルサイズをフォーマットする . これを使うには、次のように書く必要があります。
Console.WriteLine(String.Format(new FileSizeFormatProvider(), "{0:fs}", fileSize));
自分が書ける拡張メソッドを作成する
Console.WriteLine(fileSize.ToFileSize());
よりきれいに、よりシンプルに。
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み] 2つのリストを結合する
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] 既存の静的クラスに拡張メソッドを追加することはできますか?
-
[解決済み】C#には拡張プロパティがある?
-
[解決済み】C#で、Nullオブジェクトに対して拡張メソッドを呼び出すとどうなるか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】2年前のMSDateを把握する【クローズド
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。