.net column
.NET開発者のためのブログメディア

【C#入門】C#のジェネリック クラスの使い方や制約について

 
【C#入門】C#のジェネリック クラスの使い方や制約について

C#において引数の型が異なる同じ処理をしたい場合、別々のクラスを作るよりも簡単な方法があります。通常では引数の指定には必ずデータ型を定義しなければなりませんが、ジェネリッククラスを使えば引数の異なる同じ処理をひとくくりにすることが可能です。

PG
引数が違うだけなのに、同じ処理を何度もコーディングするのをどうにかできないですか?
PM
それならジェネリッククラスを使うといいですよ。使い方のポイントがあるので、見ていきましょうか!

ジェネリック クラスの概要

ジェネリッククラスは公式の説明では「特定のデータ型に固有ではない操作をカプセル化」するクラスです。例えば、C#などでint型どうしとdouble型どうしの引数を比較する処理を実装する場合、引数の型を指定しなければならないという制約があります。しかしジェネリッククラスを使うことで、引数の差異を一元化してコードを簡略化することが可能です。

ジェネリック クラスの使い方や制約

ジェネリッククラスを作る場合、通常のクラス宣言やコーディングの制約が変わってきます。使いこなすためには、まずどのような制約がかかってくるかを知る必要があるでしょう。

ジェネリッククラスを使う際の制約条件

ジェネリッククラス内では型制約がなくなる反面、型に依存しているメソッドなどの呼び出しができません。型に依存しているメソッドを呼び出したい場合は、ジェネリッククラスに制約を設ける必要があり、クラス名にwhere句を付けて宣言します。この制約には型制約やインターフェース、継承などの指定方法があり、複数の制約を組み合わせて実装することも可能です。

このジェネリッククラスは、値型であるという制約を加えます。

制約は「where 変数名 : 制約条件」という書き方で付け、カンマ区切りで複数指定可能です。主な制約条件はstruct(値型)、class(参照型)、クラス名(型継承)、インターフェース名(インターフェースの実装)となります。

PG
今まで複数書いていたコードが一気に短くなるんですね!
PM
多少コードの書き方が通常と違ってきますが、コード全体が短くなるので覚えておいた方がいいですよ。

ジェネリッククラスを利用してコードを簡略化する

当然のことですが、コード全体が短くなることでメンテナンスや修正の手間も軽減されます。特にソースコードの規模が大きくなればなるほど、ジェネリッククラスの利便性が高まってくるでしょう。通常とは異なる制約を覚える必要がありますが、ジェネリッククラスを使いこなすために覚える価値は十分にあります。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags