移除未使用的 Using

Visual Studio 使用者介面中的 [移除未使用的 Using] 選項會移除未在原始程式碼中使用的 using 指示詞、using 別名 (Alias) 及 extern 別名。有兩種方式可以呼叫此作業:

  • 主功能表:在 [編輯] 功能表中,依序指向 [IntelliSense]、[組合管理 Using],然後按一下 [移除未使用的 Using]。

  • 內容功能表:以滑鼠右鍵按一下程式碼編輯器內的任何位置,指向 [組合管理Using],然後按一下 [移除未使用的 Using]。

    注意事項注意事項

    如果您對未建置 (Build) 的原始程式碼執行 [移除未使用的 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 指示詞,則都會移除。

備註

條件式前置處理器指示詞

[移除未使用的 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。

註解

如果有註解在將要移除之指示詞或別名的語彙基元 (Token) 之間,[移除未使用的 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# 參考)

外部別名 (C# 參考)

概念

組合管理 Using 指示詞

排序 Using