ぽざうねっと
ホーム
連絡をする
同期する ( RSS 2.0 )
Login
投稿数 396 : 記事 0 : コメント 1030 : トラックバック 66
ニュース
さて、今年の秋は何を漬けようか
書庫
2008年10月 (8)
2008年9月 (41)
2008年8月 (17)
2008年7月 (9)
2008年6月 (19)
2008年5月 (2)
2008年4月 (10)
2008年3月 (25)
2008年2月 (37)
2008年1月 (53)
2007年12月 (2)
2007年11月 (10)
2007年10月 (7)
2007年9月 (10)
2007年8月 (2)
2007年7月 (5)
2007年6月 (12)
2007年5月 (10)
2007年4月 (19)
2007年3月 (16)
2007年2月 (23)
2007年1月 (19)
2006年12月 (31)
2006年11月 (9)
日記カテゴリ
DB >> MySQL
DB >> Oracle
DB >> SQL Server
dev >> .NET >> ADO.NET
dev >> .NET >> ASP.NET
dev >> .NET >> Forms
dev >> .NET >> Others
dev >> JavaScript
dev >> Others
dev >> Others >> Web
dev >> Ruby
dev >> Ruby >> Rails
dev >> SQL
dev >> XML
env >> Linux
env >> Linux >> Ubuntu
env >> Windows
env >> Windows >> Vista
etc
tool
tool >> Office
Accessory
Community
Private
ついった
みくし
null を int でキャストする
昔、NullReferenceException が発生して原因追求に結構時間がかかったことがあった
原因は null を int でキャストしていたから
NullReferenceException っていうのはインスタンスメンバ使用時に起こるのが当たり前すぎて、まさかこんなとこで出るとは思ってもいなかった
しかし、何で InvalidCastException じゃないんだろう?
意味合い的には、そっちの方が自然な気がするんだけどなぁ
投稿日時 : 2006年11月28日 23:16
コメント
#
re: null を int でキャストする
2006/11/28 23:36
じゃんぬ
Null に対しての操作はいかなる場合も、NullReferenceException が適切だと思います。
キャストが内部的に何が行われているか知っていれば、違和感はないと思いますが...
インスタンスありきでの操作なのですから、適切だと思いますよ。
#
re: null を int でキャストする
2006/11/28 23:50
επιστημη
届いた荷物が注文の品か確認すべく包みを開いたら空だった。ってときゃ:
「注文とちゃうぞ!(InvalidCast)」 よりむしろ
「からっぽやんけ!(NullReference)」 でしょうねぇ♪
#
re: null を int でキャストする
2006/11/29 0:36
THREE-ONE
ご意見ありがとうございます。
null を参照しているということは理解できるのですが、
例えば null を string にキャストすると、コード上は問題ないわけでして
null を許容しない型に null をキャストしようとしたから例外が出るのなら、「null を許容しない型にキャストしようとした」というプロセスがおかしい→InvalidCastException の方が適切じゃないの?と思ったわけであります。
うーむ、考え方がおかしいのかな?
#
re: null を int でキャストする
2006/11/29 1:03
επιστημη
あー、なるほど。
コンパイラのキモチになってみると、だ。
nullをSystem.Int32にcastする、これはおっけい。
でけたSystem.Int32をintにun-boxingすべく包みを開けた...からっぽぢゃん!! ってなことをやったように見えますです。
# 内実はわからんけども。
直接的に「nullを値に変換できるわきゃねーぢゃん!」ってことでInvalidCastでもえぇとは思うですがね ^^;
#
re: null を int でキャストする
2006/11/29 10:11
επιστημη
うぁぁぁ、違うよ違うよ Int32は値型だから null を代入できないよ。
#
re: null を int でキャストする
2006/11/29 20:08
THREE-ONE
MSDN に MSIL の unbox 命令は対象が null の場合は NullReferenceException を throw するってちゃんと書いてありました。
なんで、前は見つけられなかったんだろう、ああああ
キャストという行為は型ありき、null はそもそも型もなんもないから InvalidCastException 以前の問題と考えたらいいのかなと思いました
Post Feedback
タイトル
名前
Url:
コメント:
名前をブラウザに記憶する
Powered by:
Copyright © THREE-ONE