1.C#、VB.NET-6.型バインディング(型を結びつけること)には事前バインディングと遅延バインディングの2種類あります。これもC#とVB.NETで微妙に動作(というかお作法)が違います。はじめに事前バインディングと遅延バインディングの違いを簡単に説明します。読んで字のごとくなのですが、事前バインディングは宣言時に型を指定して使用する方法、遅延バインディングは実行時に初めてObject型変数に対して代入される型が決定する方法です。'←ここで型が決定Console.WriteLine(obj.Month)C#ではそもそもこのような書き方ができません。遅延バインディングはかつてVB6、VBAなどで当たり前のように使われてきました。遅延バインディングはある意味負の遺産と言ってもよいでしょう。レガシー機能というだけでなく、実際速度の低下やバグの温床(ランタイムエラー)などになりやすいので、VB.NET環境下においては推奨された手法ではありません。Off」という機能があります。この場合はほぼVB6スタイルでコードを書くことができますので、遅延バインディングで書いてもエラーは起きません。On」の状態だと、暗黙の型変換は使用出来なくなる為、当然遅延バインディングも使用出来なくなります。そもそも論として、遅延バインディングはよほどの事(アンマネージリソースの呼び出しとか)が無い限り使用すべきではないのですが、状況によっては使わざるを得ない場合もあるのです。VB6のレガシーコードスタイルが強いVB.NETのコードを引き継いで使用したりする場合です。いった場合、一部を除外しようとすると余りにも影響が大きい事があります。「影響が大きい=面倒」ということから遅延バインディングで書いているんでしょうけど。以下は遅延バインディングを使用した場合の回避方法です。手法はたくさんありますが、代表的なものを3つ(+1つおまけ)だけ紹介します。キャストする通常は匿名メソッド、ラムダ式を利用した場合によく使う手法ですが、遅延バインディングの回避としても有用です。例外が起こりやすいので、忘れずに例外処理を入れましょう。キャストする前に型が正しいかどうかの確認を入れるとよいです。Ifリフレクションを使うリフレクションを使ってプロパティを取得、実行します。回避方法としてはこの方法が一番安全です。Framework3.5以上)これはLINQや局所的な部分であれば有用ですが、スコープが大きすぎる場合は使用してはいけません。Framework4.0から動的型付け変数として新しくdynamic型が登場しました。これによって遅延バインディングで書けるようになっています。VB.NETの遅延バインディングと同様であまりおすすめしません。DateTime.Today;Console.WriteLine(obj.Month);状況に応じて使い分けて下さい。しつこいようですが、一番のおすすめは「遅延バインディングしない」です。22:31遅延バインディングTweet広告を非表示にする関連記事2019-06-18GroupByメソッド2GroupByメソッドには複合キーを指定することも可能です。複合キ...2019-04-16型変換は何を使う?(その2)型変換は何を使う?(その1)の続きです。sasaki816.hatenablo...2019-03-10null許容型(C#とVB.NETの違い)参照型はnullを許容していますが、値型はどうでしょうか。Javascriptからクリップボードを設定はてなブログをはじめよう!sasaki816さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。