1. ホーム
  2. c#

[解決済み】dynamic(C#4)とvarはどう違うの?

2022-04-15 23:21:16

質問

C# v4 で導入された新しいキーワードについての記事をたくさん読みましたが、"dynamic" と "var" の違いがよく分かりませんでした。

この記事 は考えさせられたが、やはり違いがわからない。

var" はローカル変数としてしか使えないが、dynamic はローカルとグローバルの両方で使えるということでしょうか?

Dynamicキーワードのないコードと、Dynamicキーワードを使ったコードを表示させてみてください。

どのように解決するのですか?

var は静的型付けされます - コンパイラとランタイムが 知る は、タイプする手間を省くだけで、100%同じです。

var s = "abc";
Console.WriteLine(s.Length);

そして

string s = "abc";
Console.WriteLine(s.Length);

となっただけでした。 コンパイラ を理解した。 s は文字列でなければなりません (イニシャライザから)。どちらの場合も、(ILの中で)次のことを知っています。 s.Length は(インスタンス)であることを意味します。 string.Length プロパティを指定します。

dynamic は <強い 非常に に最も似ています。 object しかし、動的なディスパッチが可能です。

dynamic s = "abc";
Console.WriteLine(s.Length);

ここです。 s がタイプされています。 動的な . を知らないのです。 string.Length を知らないからです。 何でも について s をコンパイル時に指定します。例えば、次のようなものもコンパイルされます(ただし実行はされません)。

dynamic s = "abc";
Console.WriteLine(s.FlibbleBananaSnowball);

実行時(のみ)には チェック を指定します。 FlibbleBananaSnowball プロパティを見つけられず、火花を散らしながら爆発する。

dynamic プロパティ、メソッド、演算子などが解決されます。 実行時 実際のオブジェクトに基づきます。COM (実行時のみのプロパティを持つことができます)、DLR、または他の動的なシステム、例えば、次のようなものと話すのに非常に便利です。 javascript .