Using Namespace;
より多くのメモリを消費しますか?
私は現在モバイルアプリケーションに取り組んでいますが、クラスの作成時にVisual Studioが配置するステートメントを使用する必要がないために、アプリケーションを実行するために追加のメモリが必要になるかどうかを知りたいと思いました。
Using Namespace;
より多くのメモリを消費しますか?
私は現在モバイルアプリケーションに取り組んでいますが、クラスの作成時にVisual Studioが配置するステートメントを使用する必要がないために、アプリケーションを実行するために追加のメモリが必要になるかどうかを知りたいと思いました。
簡単に言えば、いいえ。
これらのステートメントは、どの形式のILにも変換されません。これらは、(醜い!)完全修飾型名の使用を避けるための単なるショートカットです。ただし、VS2008やR#を使用している場合は、未使用のものを自動的に削除できます。
名前空間はC#のコンパイル時のみの機能であり、開発中の時間を節約できます。ディレクティブは、コード内の省略形のusing
型名を検索するためにコンパイラーによって使用されます。
基本的に、コンパイラがコード内で型名を検出するたびに、各using
ディレクティブを取得して型の名前の前に付加し、その完全修飾名が解決されるかどうかを確認します。
アプリケーションがコンパイルされると、名前空間using
がなくなり、ILはそれらを必要としないため、ディレクティブはなくなります。
「記憶」とは、「そもそもなぜステートメントを使用しているものを一番上に置いたのかを覚えておく必要がある」という意味の場合はそうです。
しかし、あなたが言っている意味ではありません。.NETアセンブリは通常、オンデマンドでロードされるため、これらの追加のステートメントを使用してもパフォーマンスが低下することはありません。ただし、保守性のために、それらを削除することをお勧めします。
このコンテキストでの「using」キーワードに関する Microsoft の情報は次のとおりです: http://msdn.microsoft.com/en-us/library/sf0df423.aspx。これは基本的に、アセンブリで完全修飾名を使用する代替手段を提供しますが、実際には、その特定のキーワードを使用してメモリ内のアセンブリをインポートまたはインクルードしません。
いいえ、違います。タイプ名のみを使用できるようにするための省略形です。
StringBuilder
名前空間で修飾されたタイプ名とは対照的に:
System.Text.StringBuilder
usingステートメントが宣言されているファイル内。
いいえ、コンパイラの実行速度が少し遅くなるだけです:)
そうではありません。使用しているオブジェクトをフルネームで定義する必要がないように使用されます。System.IO.Fileの代わりに、System.IOを使用している場合はFileを実行できます。
実際にオブジェクトを作成するまで、メモリにはロードされません。C ++とは異なり、ライブラリ全体はインポートされません。これは、.NET FrameworkがターゲットマシンにインストールされてGACに読み込まれ、カスタム.dllがアプリケーションフォルダーのbinフォルダーにあるためです。