ホームページ > バックエンド開発 > C++ > C# の `var` と `dynamic` の違いは何ですか?

C# の `var` と `dynamic` の違いは何ですか?

DDD
リリース: 2025-01-10 21:32:44
オリジナル
827 人が閲覧しました

What's the Difference Between `var` and `dynamic` in C#?

C# 4 の dynamicvar の違いについての深い理解

多くの開発者は、C# 4 の新機能を調べるときにキーワード「dynamic」と「var」に遭遇したことがあります。これら 2 つのキーワードは似ていますが、機能はまったく異なり、コーディング エクスペリエンスに大きな影響を与える可能性があります。

それらの違いを明らかにしましょう:

var: 暗黙的な型ヘルパー

var は「変数」の略で、C# 3.0 で導入された型推論キーワードです。コンパイラが割り当てられた値に基づいて型を推測できるようにすることで、変数の宣言を簡素化します。例:

<code class="language-csharp">var s = "abc";</code>
ログイン後にコピー

ここで、コンパイラーは、s には値「abc」が割り当てられているため、それは文字列であるべきであると理解します。 var のスコープはローカルです。つまり、ローカル変数でのみ使用できます。

dynamic: ランタイムマジック

C# 4.0 で導入された

dynamic は根本的な変更です。 var とは異なり、コンパイル中の型チェックをバイパスして実行時に任せることができます。この動的な性質は柔軟性と潜在的なリスクをもたらします:

<code class="language-csharp">dynamic s = "abc";</code>
ログイン後にコピー

この場合、s の型はコンパイル時には不明ですが、実行時にチェックされて、必要なプロパティとメソッドがあるかどうかが確認されます。 dynamic 変数は、ランタイム定義のメンバーを持つ COM オブジェクトや外部ライブラリの操作などのシナリオに柔軟性をもたらします。

コードの比較: 例示的な例

これらの違いをさらに詳しく説明するために、次のコード スニペットを考えてみましょう:

<code class="language-csharp">// 无 `dynamic`
var s = "abc";
Console.WriteLine(s.Length);</code>
ログイン後にコピー
<code class="language-csharp">// 使用 `dynamic`
dynamic s = "abc";
Console.WriteLine(s.Length);</code>
ログイン後にコピー

どちらの場合も、Length 属性が呼び出されます。ただし、var では型チェックがコンパイル時に行われますが、dynamic では実行時に行われます。

結論

dynamicvar は両方とも、C# 開発者のツールボックス内の貴重なツールです。 var 型推論が簡略化され、コードがより簡潔で読みやすくなりました。一方、dynamic は型チェックを実行時に延期することで動的な動作を解放し、柔軟性を高めますが、実行時エラーを避けるために慎重な取り扱いが必要です。

以上がC# の `var` と `dynamic` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート