7

Using Namespace;より多くのメモリを消費しますか?

私は現在モバイルアプリケーションに取り組んでいますが、クラスの作成時にVisual Studioが配置するステートメントを使用する必要がないために、アプリケーションを実行するために追加のメモリが必要になるかどうかを知りたいと思いました。

4

7 に答える 7

15

簡単に言えば、いいえ。

これらのステートメントは、どの形式のILにも変換されません。これらは、(醜い!)完全修飾型名の使用を避けるための単なるショートカットです。ただし、VS2008やR#を使用している場合は、未使用のものを自動的に削除できます。

于 2009-02-17T18:24:19.333 に答える
5

名前空間はC#のコンパイル時のみの機能であり、開発中の時間を節約できます。ディレクティブは、コード内の省略形のusing型名を検索するためにコンパイラーによって使用されます。

基本的に、コンパイラがコード内で型名を検出するたびに、各usingディレクティブを取得して型の名前の前に付加し、その完全修飾名が解決されるかどうかを確認します。

アプリケーションがコンパイルされると、名前空間usingがなくなり、ILはそれらを必要としないため、ディレクティブはなくなります。

于 2009-02-17T18:27:06.317 に答える
3

「記憶」とは、「そもそもなぜステートメントを使用しているものを一番上に置いたのかを覚えておく必要がある」という意味の場合はそうです。

しかし、あなたが言っている意味ではありません。.NETアセンブリは通常、オンデマンドでロードされるため、これらの追加のステートメントを使用してもパフォーマンスが低下することはありません。ただし、保守性のために、それらを削除することをお勧めします。

于 2009-02-17T18:28:43.067 に答える
3

このコンテキストでの「using」キーワードに関する Microsoft の情報は次のとおりです: http://msdn.microsoft.com/en-us/library/sf0df423.aspx。これは基本的に、アセンブリで完全修飾名を使用する代替手段を提供しますが、実際には、その特定のキーワードを使用してメモリ内のアセンブリをインポートまたはインクルードしません。

于 2009-02-17T18:33:35.737 に答える
2

いいえ、違います。タイプ名のみを使用できるようにするための省略形です。

StringBuilder

名前空間で修飾されたタイプ名とは対照的に:

System.Text.StringBuilder

usingステートメントが宣言されているファイル内。

于 2009-02-17T18:27:26.377 に答える
1

いいえ、コンパイラの実行速度が少し遅くなるだけです:)

于 2009-02-17T18:26:46.533 に答える
0

そうではありません。使用しているオブジェクトをフルネームで定義する必要がないように使用されます。System.IO.Fileの代わりに、System.IOを使用している場合はFileを実行できます。

実際にオブジェクトを作成するまで、メモリにはロードされません。C ++とは異なり、ライブラリ全体はインポートされません。これは、.NET FrameworkがターゲットマシンにインストールされてGACに読み込まれ、カスタム.dllがアプリケーションフォルダーのbinフォルダーにあるためです。

于 2009-02-17T18:27:11.387 に答える