C#拡張法:静的クラスを拡張できますか? C#の拡張メソッドは、ソースコードを変更せずに既存のクラスに機能を追加する強力な方法を提供します。 ただし、一般的な質問は、この機能が静的クラスに拡張されるかどうかです。 短い答えは次のとおりです。いいえ、拡張メソッドを使用して静的クラスを直接拡張することはできません。 拡張メソッドは、静的クラスが本質的に欠けているインスタンスメンバー(非静的メンバー)で動作します。 静的クラスの拡張メソッドを定義しようとすると、コンパイラエラーが発生します。
回避策:ラッパークラスの使用
直接拡張は不可能ですが、実用的なソリューションには静的ラッパークラスの作成が含まれます。このラッパークラスは静的クラスをカプセル化し、代わりにラッパーに拡張メソッドを追加できます。 これにより、間接アクセスと拡張機能が提供されます
例で説明しましょう。 色付きの出力を簡素化するためにメソッドを
このアプローチは、元のWriteColoredLine()
クラスを変更せずに、目的の機能を効果的に追加します。 拡張メソッドの署名のConsole
構文により、実際には
<code class="language-csharp">public static class ConsoleWrapper { public static void WriteColoredLine(this Console console, string text, ConsoleColor color) { console.ForegroundColor = color; console.WriteLine(text); console.ResetColor(); } }</code>クラス自体のメンバーであるかのように呼び出すことができます。
オブジェクトをメソッドに明示的に渡すことに注意してください。 これは、インスタンスクラスを拡張することとの重要な違いです
以上が拡張メソッドはC#で静的クラスを拡張できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。