はじめに
C#を勉強してると、
「varって動的型付けじゃないの?」
↓
「C#だとdynamicが動的型付けで、varは型推論なんだ」
↓
「てか、動的型付けと型推論って違うのか!」
となり、違いを理解していなかったので調べてみました。
ざっくりとした説明なので、詳しく知りたい人は自分で調べてちょ。
動的型付け
実行時(Console.Write時)に型が決定されます。なので、下記のようになります。
// C#dynamicx=100// 動的型付けにより、変数xの型が数値型に決定するx="Hello World !"// 型が動的に決定されるので、エラーがにならず変数xの型が文字列型になるConsole.Write(x)// 「Hello World !」が表示される型推論
コンパイル時(上からコードが読み込まれる時)に型が決定されます。
// C#varx=100// Int型を指定しなくても、代入される値からコンパイラが変数xの型を自動で決定する(型推論)x="Hello World !"// 型推論によりxがInt型に決定されているため、Int型以外を代入するとコンパイルエラーが発生Console.Write(x)// コンパイルエラーのため実行できない補足
しかしながら、あくまで型推論である var と違って、dynamic で宣言した変数の型は「動的型」になります。
varsx=1;// sx の型は int 型dynamicdx=1;// dx の型は dynamic 型