C#と.NETのジェネリックプログラミングとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > C#と.NETのジェネリックプログラミングの意味・解説 

C#と.NETのジェネリックプログラミング

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/02 08:30 UTC 版)

ジェネリックプログラミング」の記事における「C#と.NETのジェネリックプログラミング」の解説

C#(およびその他の.NET言語)のジェネリクス.NET Framework 2.0一部として2005年11月追加された。Java似てはいるが、.NETジェネリクスは、コンパイラによるジェネリクス型から非ジェネリクス型へのコンバートとしてではなく実行時実装される。このことにより、ジェネリクスに関するあらゆる情報メタデータとして保存される.NETジェネリクス機能 型情報削除せずCLR内部ジェネリクス構築されるため(そしてコンパイラ上では全く構築しないため)、キャスト動的チェック実行からくるパフォーマンスヒットがない。また、プログラマーリフレクション通じてジェネリック情報アクセスできる。型情報削除しないので、Javaでは不可能なジェネリック型配列生成が可能。 ジェネリック型引数として参照型だけでなく値型組み込み基本型、およびユーザー定義型の両方)も利用できる値型場合JITコンパイラ特殊化のためにネイティブコード新しインスタンス作成する。このことによりボックス化をする必要がなくなりパフォーマンス向上するJavaと同様、ジェネリック型引数がそれら自身ジェネリック型あるようにできる。つまり、List<List<Dictionary>>のような型は有効である。 C#(および一般.NET)は、キーワードwhereを使用することで、値型/参照型デフォルトコンストラクタ存在親クラス実装するインターフェイスなどでジェネリック型制約することができる。 共変性と反変性サポートしている。C# 4.0以降ではout修飾子またはin修飾子により、型パラメータ共変または反変にすることができる。これによって、ジェネリック型代入使用柔軟性向上するusing System;using System.Collections.Generic;static int FirstIndexOfMax(List list) where T: IComparable{ if (list.Count == 0) { return -1; } int index = -1; for (int i = 0; i < list.Count; ++i) { if ((index == -1 && list[i] != null) || (index >= 0 && list[index] != null && list[i] != null && list[index].CompareTo(list[i]) < 0)) { index = i; } } return index;} この例ではFirstIndexOfMaxメソッド型パラメータTに対して、IComparableインターフェイス実装していなければならないという制約指定している。このことにより、IComparableインターフェイスメンバであるCompareToメソッド利用可能になっているC++/CLI.NETジェネリクスC++のテンプレート両方サポートする。ただしこれらの間に互換性はない。

※この「C#と.NETのジェネリックプログラミング」の解説は、「ジェネリックプログラミング」の解説の一部です。
「C#と.NETのジェネリックプログラミング」を含む「ジェネリックプログラミング」の記事については、「ジェネリックプログラミング」の概要を参照ください。

ウィキペディア小見出し辞書の「C#と.NETのジェネリックプログラミング」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「C#と.NETのジェネリックプログラミング」の関連用語

C#と.NETのジェネリックプログラミングのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



C#と.NETのジェネリックプログラミングのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのジェネリックプログラミング (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS