Влияние эффективности неиспользуемых «использования» директив в C #

Просто любопытно.

Имеет ли значение, если я добавляю несколько с помощью директив в начале моего кода, который я не использую в своем коде. Как это.

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, чтобы сделать это, но мне просто интересно узнать об этом.

19
nl ja de
CodeMaid , который свободен в отличие от resharper, может «очистить» целое решение. Вы можете легко удалить все неиспользованные с помощью . Тем не менее, VinayC сказал , с помощью является только помощником компилятора.
добавлено автор Steve B, источник
@DGibbs, предположим, что у меня были некоторые требования от клиента, в соответствии с которым я код и добавил некоторые из них, но теперь изменения требований для приложения и изменения кода тоже. Так что я должен потратить время на поиск и удаление тех нежелательных использования?
добавлено автор yogi, источник
Терминология nitpick - это с помощью директив . с помощью операторов - это те, которые появляются в методах и т. д., для автоматического вызова Dispose .
добавлено автор Jon Skeet, источник
Нет, это просто влияет на время компиляции.
добавлено автор Hamlet Hakobyan, источник
Это не имеет никакого эффекта. Эффект делает , добавляет ссылку на DLL, которую вы не используете, потому что вы получите DLL в своей выходной папке, которая вам не нужна и которая занимает дисковое пространство. Если у вас есть использование для типа в DLL, на который ссылается ссылка, вы можете подумать, что она используется, потому что если вы удалите ссылку, вы получите ошибку компиляции (но это будет просто ненужное использование, вызывающее ее).
добавлено автор Matthew Watson, источник
Зачем вы это делаете?
добавлено автор DGibbs, источник
Если вы используете resharper, вы можете использовать его для поиска и удаления непринятых с помощью операторов. jetbrains.com/resharper/webhelp/…
добавлено автор mortb, источник
@JonSkeet: да, это должно быть директивы , конечно :)
добавлено автор mortb, источник
Возможный дубликат Почему вы должны удалять ненужные C# с помощью директив? </а>
добавлено автор azam, источник

4 ответы

Экстра Использование директив не будет иметь влияния на память/производительность для конечного приложения - они не что иное, как компилятор, обеспечивающий ярлыки для работы с длинными именами типов. Компилятор использует эти пространства имен для разрешения неквалифицированных (или частично квалифицированных) имен типов для исправления типов.

17
добавлено
Точнее: в .NET CLR нет понятия «использование». Это просто помощь компилятора, поэтому вам не нужно вводить полное пространство имен. Компилятор Post, каждый класс, с которым вы ссылаетесь (и только те), связан с полным именем, в сгенерированном байт-коде отсутствует след использования.
добавлено автор TomTom, источник

Только ради полноты, 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
11
добавлено

В вашей заявке нет производительности. Это просто ярлык, который вы используете, чтобы не набирать всю квалификацию. например

var f = new File()

вместо

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

ОДНАКО. это влияет на производительность вашей среды разработки (IDE) несколько, потому что чем больше использования утверждений вы используете, тем больше увеличивается кеш автозаполнения. Это делает время поиска немного медленнее. Но это обычно едва заметно.

Однако этот совет не применяется к добавлению ссылок на сборки для вашего проекта. Если вы добавите ссылку на MyGloriousLibrary.DLL и никогда не будете использовать ее, у вас будет плохое время.

8
добавлено

Это не влияет на общую производительность или использование памяти вашего приложения. Директивы using находятся только во время компиляции, так что вам не нужно каждый раз выписывать полное имя класса. После компиляции кода ничего не осталось от этих директив (скомпилированный код всегда использует полные имена типов).

4
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)