未使用の using の削除

Visual Studio ユーザー インターフェイスの [未使用の using の削除] オプションは、ソース コードで使用されていない using ディレクティブ、using エイリアス、および extern エイリアスを削除します。この操作を呼び出すには、次の 2 つの方法があります。

  • メイン メニュー - [編集] メニューの [IntelliSense] をポイントし、[using の整理] をポイントして、[未使用の using の削除] をクリックします。

  • コンテキスト メニュー - コード エディターの任意の場所で右クリックし、[using の整理] をポイントして、[未使用の using の削除] をクリックします。

    [!メモ]

    ビルドできないソース コードで [未使用の using の削除] を実行すると、いくつかの必要な using ディレクティブが削除されることがあります。

次の例は、ソース コードで [未使用の using の削除] を実行した結果を示しています。

[前へ]

[後ろへ]

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("test");
        }
    }
}
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("test");
        }
    }
}

前の例で、ソース コードの後方で使用されているのは System だけです。その他の using ディレクティブは、重複する System using ディレクティブも含めて削除されます。

解説

Bb514115.collapse_all(ja-jp,VS.110).gif条件付きプリプロセッサ ディレクティブ

[未使用の using の削除] では、アクティブなブロック内の未使用のディレクティブとエイリアスのみが削除されます。この動作を次の例に示します。

[前へ]

[後ろへ]

#define DEBUG

#if DEBUG

using System;

using System.Collections.Generic;

using System.Linq;

#else

using System.Text;

#endif

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

List<int> myList = new List<int> { 1, 2, 3 };

Console.WriteLine(myList);

}

}

}

#define DEBUG

#if DEBUG

using System;

using System.Collections.Generic;

#else

using System.Text;

#endif

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

List<int> myList = new List<int> { 1, 2, 3 };

Console.WriteLine(myList);

}

}

}

前の例では、System.Text と System.Linq の両方が使用されていません。しかし、System.Text はアクティブなブロック内にないため、System.Linq だけが削除されます。

Bb514115.collapse_all(ja-jp,VS.110).gifコメント

[未使用の using の削除] では、削除されるディレクティブまたはエイリアスのトークンどうしの間にコメントがある場合にのみ、そのコメントが削除されます。前後にあるコメントは影響されません。この動作を次の例に示します。

[前へ]

[後ろへ]

using System;

/* Comment before remains */

using /* Comment between removed */ System.Linq;

// Comment after remains

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("My Example");

}

}

}

using System;

/* Comment before remains */

// Comment after remains

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("My Example");

}

}

}

前述の例では、System.Linq が削除されています。ディレクティブのトークンどうしの間にあるコメントだけが削除されます。

参照

関連項目

[オプション]、[テキスト エディター]、[C#]、[詳細]

using ディレクティブ (C# リファレンス)

extern エイリアス (C# リファレンス)

概念

using ステートメントの整理

using の並べ替え