■30610 / ) |
Re[4]: 参照型の等値演算子でboxingを回避したい |
□投稿者/ NyaRuRu (80回)-(2008/12/27(Sat) 22:51:54)
|
2008/12/27(Sat) 22:58:25 編集(投稿者) 2008/12/27(Sat) 22:52:21 編集(投稿者)
■No30609 (ほにゃ さん) に返信 > IL_0002: box !!T ← x > IL_0008: box !!T ← y > ではないかと、想像してるのですが。
Tが値型のときは確かにこの部分でボックス化が発生します. Tが参照型のときは,JIT コンパイル時に無視されます.何もおきません.
http://standards.iso.org/ittf/PubliclyAvailableStandards/c042927_ISO_IEC_23271_2006(E).zip ISO/IEC 23271:2006 Partition III p.103 >If typeTok is a reference type, the box instruction does nothing.
今回の場合はGeneric Methodの制約のため実行時にTが値型となることはありえないはずです. よって,IL には box 命令が存在したとしても,実行時にボックス化が起こることはありません.
念のため注意しておいて欲しいのですが,ボックス化という概念を必要とするのは値型のみです. 参照型に対しては,そもそもボックス化という概念が必要がありません. よって,値型が一切出てこないコードでボックス化を気にしているのであれば,どこかに勘違いがあるように思います.
|
|