21

ただそれについて興味があります。

usingコードで使用していない複数のディレクティブをコードファイルの先頭に追加しても問題ありません。このような。

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;
//using blah.. blah.. blah..;

public class myClass
{
    // Class members
}
  • アプリケーションのメモリ使用量に悪影響を及ぼしますか?

  • アプリケーションのパフォーマンスに悪影響を及ぼしますか?

それらを削除することは良い習慣であり、削除するために.Net IDEの完全なサポートが不足していることは知っていますが、それについて知りたいだけです。

4

4 に答える 4

19

追加のUsing ディレクティブは、最終的なアプリケーションのメモリ/パフォーマンスに影響を与えません。それらは、長い型名を処理するためのコンパイラ提供のショートカットにすぎません。コンパイラは、これらの名前空間を使用して、修飾されていない (または部分的に修飾された) 型名を正しい型に解決します。

于 2013-01-29T10:24:57.573 に答える
13

完全を期すために、このために生成された IL は次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Hello World!");
        }
    }
}

この:

class Program
{
    static void Main(string[] args)
    {
        System.Console.Write("Hello World!");
    }
}

はまったく同じです:

.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "Hello World!"
  IL_0006:  call       void [mscorlib]System.Console::Write(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Program::Main
于 2013-01-29T11:38:33.487 に答える
8

アプリケーションのパフォーマンス ヒットはありません。これは、修飾子全体を入力するのを避けるために使用する単なるショートカットです。例えば

var f = new File()

それ以外の

var f= new System.IO.File();

でも。使用する using ステートメントが多いほど、オートコンプリート キャッシュが大きくなるため、開発環境 (IDE) のパフォーマンスに多少影響します。これにより、ルックアップ時間がわずかに遅くなります。しかし、これは通常ほとんど目立ちません。

ただし、このアドバイスは、プロジェクトへのアセンブリ参照の追加には適用されません。MyGloriousLibrary.DLL への参照を追加し、それをまったく使用しないと、大変なことになります。

于 2013-01-29T10:30:28.027 に答える
4

アプリケーションの全体的なパフォーマンスやメモリ使用量にはまったく影響しません。using ディレクティブはコンパイル時に存在するだけなので、毎回完全なクラス名を書き出す必要はありません。コードがコンパイルされると、これらのディレクティブは何も残りません (コンパイルされたコードは常に完全な型名を使用します)。

于 2013-01-29T10:25:18.113 に答える