GenericsのType Tにいくつかの制限を課すことは可能ですか?.net:ジェネリックスにいくつかの制限を適用するには?
答えて
はい、Tにいくつかの制約を加えることができます。制約はwhere
節で導入されています。チェックhere
where T: struct
type引数は値型でなければなりません。 Nullableを除く任意の値型を指定できます。詳細については、Nullable型の使用(C#プログラミングガイド)を参照してください。
where T: class
type引数は参照型でなければなりません。これは、どのクラス、インタフェース、デリゲート、または配列型にも当てはまります。
where T : new()
type引数には、パラメータのないパブリックコンストラクタが必要です。他の制約と一緒に使用する場合、new()制約は最後に指定する必要があります。
where T : <base class name>
type引数は、指定された基本クラスであるか、派生している必要があります。
where T : <interface name>
type引数は、指定されたインターフェイスであるか、または実装されている必要があります。複数のインタフェース制約を指定できます。制約インターフェースはまた、一般的であり得る。 Tのために供給
where T : U
型引数があるか、またはU.
例えば私はそこにあなたの基本的なクラスとインタフェース名の例で山括弧を使用することに注意したいでしょう:) –
@Tim Barrassあなたが正しいです、 '
MSDNのために十分であれば... –
genericパラメータconstraintsを参照してください。独自のジェネリック型とメソッドを作成する場合、制約によって型パラメータに関するいくつかのルールを適用できます。彼らは必要なインターフェースをサポートしているか、デフォルトのコンストラクターを持っています。
基本的
public class MyClass<T> where T : ISomeInterface
ために与えられた引数から派生しなければなりません。余分な詳細についてはthis oneのような既存のSOの質問もたくさんあります。
- 1. ジェネリックスと継承を適切に使用するのはいつですか?
- 2. .NETジェネリックスを学ぶのに最適なリソースですか?
- 3. .NET MemoryCache:メモリ制限をどのように適用しますか?
- 4. これらの制限(ビジネス制限)を適用するにはどうすればよいですか?
- 5. 適用するCSSを制限する
- 6. パッケージ名の制限はgrailsに適用されますか?
- 7. Symbianのスタック制限はPyS60にも適用されますか?
- 8. Android - いくつかのキャラクターをedittextに制限したい
- 9. .NETリモートデバッガポートを制限する
- 10. なぜいくつかの仮想関数は動的に制限されていますが、いくつかは制限されていませんか?
- 11. .NETスタックメモリ制限
- 12. asp.netのいくつかの条件に基づいてソートを制限する
- 13. UITextViewに単語の制限を適用する
- 14. ロータスビューをいくつかのフォルダの内容に制限するにはどうすればいいですか?
- 15. ウェブサイトの埋め込みをいくつかのドメインに制限する
- 16. Javaジェネリックス - 下限を除くワイルドカードの目的ですか?
- 17. は、テキストフィールドの長さの合計が、いくつかの制限
- 18. Tkinter:ユーザーをいくつかの関数に制限する方法
- 19. いくつかのWebディレクトリを制限付きディレクトリに設定する
- 20. Team System Web Accessの権限を適切に制限するにはどうすればよいですか?
- 21. Sharepoint 2010が.Net 3.5に制限されているのはなぜですか?
- 22. MongoDB、MaxPoolSizeの制限はすべてのクライアントインスタンスに適用されますか?
- 23. テキストフィールドにテキスト値の制限を適用するにはどうすればよいですか?
- 24. の.Netオブジェクトのサイズ制限
- 25. 規制を使用して多くのルートを制限するにはどうすればよいですか?
- 26. NodeJS + Express - いくつかのルートにセッションミドルウェアを適用する
- 27. 制限付きd3.js強制レイアウトに重力を適用する
- 28. .NETプロセスオブジェクトのCPU使用量を制限できますか?
- 29. AES128 CBCは0パディングを使用できますか?クライアントのいくつかの制限に
- 30. クエリ制限内のBigQueryの1,000テーブルは、ワイルドカードに適用されますか?
これは意味をなさない。どのような制限を適用したいですか?コンパイル時または実行時に強制したいでしょうか? – Gabe
彼は私が信じているジェネリック型の制約について言及しています。 –