投稿者 るしぇ  (社会人) 投稿日時 2010/5/21 11:39:36
> ネットを見ているとOption Strict Onを推奨するとよく見かけます。
ボクも推奨派。自分の指示できるプロジェクトでは強制してます。
実行時には遅延バインディングとなり、結局キャストされるので、プログラマが
意識して型変換のコードを書いて事前バインディングにしておく方が、バグの
早期発見につながります。
どんなデータが扱われているのか把握していれば、Option Strict On で
全て書けるようになると思います。

DataSet、DataTable、DataRowあたりの話だと、NULL 判定が入ってきたりで、
単純にキャストというようには行かなくなる方が多いのでは?むしろ入力チェック
に近いようなカスタマイズが必要になるので、データ型毎にサブプロシージャ
を用意している事が多いかもしれません。(引数で NULL 許可だとか、書式とかを指定)
チェックする項目は限られますからね。

単純にキャストに近いというか、入力した時点でチェックされていいなら
「型付き~」というのがあります。
ウィザードを使うので、ボクはちょっと敬遠気味の技術ですが、使った人の意見
もWEB上に転がってますので検索してみてください。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37730&forum=7
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/d2a02163-f768-47fb-8c74-1d51dd5ea975

>>>SqlServerから読み込んだ場合すべてObject型として認識されるのでしょうか?
[DataRow.Item プロパティ]
http://msdn.microsoft.com/ja-jp/library/5akhx035.aspx
元々は、フィールドの型は厳密に定義されてなかったんです。
プロパティが Object 型を返します。
数値型でも、文字列型でも、日付型でも入りますからね。いちいちオブジェクトの
方で指定しなかった。
ちょっと古い考え方だと、データ型毎にオーバーロードで別プロパティを用意して
って発想になったんじゃないかな?
Excel でもセルの値とか Object で何でも処理します的なコードが書けます。
何でも.Select みたいな。型チェックとかは呼び出し側でそれぞれ作って
くださいよって設計だったんです。
それでも型指定が重要ですよーって意識が高まってきて、簡単に型指定できるような
技術が伴って色々な機能が追加されてます。

[余談]LINQ あたりの話から匿名型ってのも出てきてて、型の推論てのもあって。。。
http://msdn.microsoft.com/ja-jp/library/cc468406(VS.90).aspx
またややこしくなった気がするのはボクだけ?orz