问题
Visual Studio will automatically create using statements for you whenever you create a new page or project. Some of these you will never use.
Visual Studio has the useful feature to "remove unused usings".
I wonder if there is any negative effect on program performance if the using statements which are never accessed, remain mentioned at the top of the file.
回答1:
An unused using has no impact to the runtime performance of your application.
It can affect the performance of the IDE and the overall compilation phase. The reason why is that it creates an additional namespace in which name resolution must occur. However these tend to be minor and shouldn't have a noticeable impact on your IDE experience for most scenarios.
It can also affect the performance of evaluating expressions in the debugger for the same reasons.
回答2:
No, it's just a compile-time/coding style thing. .NET binaries use fully qualified names under the hood.
回答3:
No effect on execution speed, but there may be some slight effect on compilation speed/intellisense as there are more potential namespaces to search for the proper class. I wouldn't worry too much about it, but you can use the Organize Usings menu item to remove and sort the using statements.
回答4:
The following link A good read on why to remove unused references explains how it be useful to remove unused references from the application.
Below are the some excerpts from the link:
By removing any unused references in your application, you are preventing the
CLR
from loading the unused referenced modules at runtime. Which means that you will reduce the startup time of your application, because it takes time to load each module and avoids having the compiler load metadata that will never be used. You may find that depending on the size of each library, your startup time is noticeably reduced. This isn't to say that your application will be faster once loaded, but it can be pretty handy to know that your startup time might get reduced.Another benefit of removing any unused references is that you will reduce the risk of conflicts with namespaces. For example, if you have both
System.Drawing
andSystem.Web.UI.WebControls
referenced, you might find that you get conflicts when trying to reference theImage
class. If you have using directives in your class that match these references, the compiler can't tell which of the ones to use. If you regularly use autocomplete when developing, removing unused namespaces will reduce the number of autocompletion values in your text editor as you type.
回答5:
No, there are several process involved when compiling a program. When the compiler start looking for references (classes, methods) it will use only the ones used on the code. The using directive only tells the compiler where to look. A lot of unused using statement could maybe have a performance issue but just at compile time. At runtime, all the outside code is properly linked or included as part of the binary.
回答6:
Code that does not execute does not affect the performance of a program.
来源:https://stackoverflow.com/questions/1162766/how-is-performance-affected-by-an-unused-using-directive