2018年02月05日
川俣晶の縁側ソフトウェア技術雑記total 2267 count

C#で型引数型の値を比較できない

Written By: 川俣 晶連絡先

問題 §

 C#で以下のコードがコンパイルできない。

  • void Compare<T>(T x, T y) { return x == y; }

原因 §

 ==演算子はデフォルトで参照型を比較することしかできない。型情報を参照できる場合は、それによって比較可能になる場合もあるが、型引数経由ではその情報が得られない。

解決 §

 参照型を扱うだけで良ければ、以下のように制約を付けることでコンパイル可能になる。

  • bool Compare<T>(T x, T y) where T : class { return x == y; }

参考 §

Can't operator == be applied to generic types in C#?

感想 §

「C#も意外とつまらない場所でまだ隙があるな、と思った」

「汎用性を意識すると意外と面倒くさい問題に巻き込まれるわけだね」

「まあ、型引数はそれほど出番がないから何とでもなると言えばなるけどね」

Facebook

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20180205160518
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.