Как добавить пространство имен в visual studio
Для чего нужны пространства имен?
Если вы только начали программировать, вы можете задаться вопросом, для чего нам нужны пространства имен. Почему бы просто не поместить все ваши классы в те же пространства имен, чтобы они всегда были доступны? У вас есть действительный пункт, но только если ваш проект очень мал. Как только вы начинаете добавлять все больше и больше классов, имеет смысл разделить их на пространства имен. Это просто упрощает поиск кода, особенно если файлы размещаются в соответствующих папках . фактически, если добавить папку в проект, а затем добавить в него класс, Visual Studio автоматически поместит его в соответствующее пространство имен. Таким образом, если создать папку в MyProject с именем MyFolder, классы, добавленные в эту папку, по умолчанию будут помещены в пространство имен с именем MyProject.MyFolder.
Конфликт имен в Пространстве имен
Но вы также можете импортировать пространство имен, как и любое другое пространство имен (встроенное или определяемое пользователем), благодаря оператору using. Вот более полный пример:
Пока все хорошо! Однако, если вы хотите использовать файл класса из пространства имен System.IO? Ну, вот где начинаются проблемы. Потому что если вы импортируете это пространство имен, а также, с помощью оператора using, компилятор больше не знает, какой файловый класс вы имеете в виду - наш собственный или один из System.IO. Это можно решить, импортировав одно из пространств имен (в идеале то, из которого вы используете большинство типов), а затем полностью указав имя другого, как в этом примере:
Использование директивы Alias
Чтобы сократить имя пространства имен, можно импортировать пространство имен под другим именем с помощью директивы Alias. Обратите внимание, как я это делаю в следующем примере:
Волшебство происходит в третьей строке, где я обращаюсь к MyProject.IO и даю ему более короткое имя (MyIO), которые затем может быть использовано, когда мы хотим получить доступ к типам из него. На данный момент мы не экономим много нажатий клавиш, но опять же вы должны представить себе еще более длинные имена и уровни пространств имен, и поверьте мне, они могут быть довольно длинными и вложенными.
Резюме
Пространства имен дают возможность инкапсулировать типы в "именованные пространства", что позволяет получить лучшую структуру в коде, а также иметь несколько классов с одинаковыми именами, если они существуют в отдельных пространствах имен.
Чтобы определить пространство имен используется следующая конструкция:
Вложенные пространства имен
Здесь мы определили вложенное пространство имен (namespace) MyNamespace . Теперь, чтобы использовать класс Data мы должны сделать так:
то есть, перед именем класса ( Data ) мы указываем название пространства имен ( MyNamespace ).
Более предпочтительным с точки зрения читабельности и поддержки проекта является организация пространства имен непосредственно через обозреватель решений Visual Studio . По умолчанию Visual Studio создает новое пространство имен в проекте на каждую папку в проекте. Например, создадим в нашем проекте попку с именем Base:
Создадим новый класс с названием BaseClass :
Обратите внимание на то, какое имя пространству имен присвоила Visual Studio :
По умолчанию, Visual Studio создала новый класс в пространстве имен составленному по шаблону: [Имя_проекта].[Папка_с_файлом]
Аналогичным образом мы можем создать поддиректорию в папке Base и пространство имен снова будет соответствовать физическому пути на диске, например:
Физически этот интерфейс располагается по пути /Base/Interfaces/IView.cs
Глобальные пространства имен и пространства имен уровня файла
Глобальные пространства имен
Глобальные пространства имен удобно использовать в том случае, если вам необходимо использовать это пространство имен во всем (или в большинстве файлов) проекте. Например, уже используемое нами пространство имен System можно определить как глобальное. Чтобы определить глобальное пространство имен необходимо перед его объявлением использовать ключевое слово global .
Теперь нам нет необходимости в каждом файле проекта для которого необходимо использование пространства имен System использовать конструкцию using System; .
Глобальные пространства имен можно определять в любом месте проекта, однако при этом, пространство имен с параметром global всегда должно находиться в коде выше, чем пространство имен без global :
Как можно видеть на скриншоте, Visual Studio указывает нам на то, что пространство имен с global необходимо перенести ВЫШЕ. И хоть мы имеем право определить глобальное пространство в любом удобном для нас месте, все же стоит придерживаться элементарных правил хорошего тона и постараться обеспечить поддержку нашего проекта в любом обозримом будущем. Поэтому все глобальные пространства имен лучше вынести в отдельный файл и назвать этот файл наиболее подходящим образом, например, GlobalUsings.cs или GlobalNamespaces.cs :
В обозревателе решений этот файл находится на самом верхнем уровне в проекте:
Пространства имен уровня файла
Итого
Есть ли способ, с правой кнопкой мыши на классе или в некоторых инструменте на Visual Studio 2019, что позволяет мне автоматически выбирать кучу классов и установить для них пространство имен? Или щелкните правой кнопкой мыши класс и установите его пространство имен в качестве пути в файловой системе из папки Workspace?
Проблема в том, что сейчас в том, что мой единственный выбор - копирование пространства имен, вставив его на каждом классе и снова и снова окружая код с скобами. Я просто хочу сделать этот процесс проще.
Также я знаю, что это не нужно для размещения каждого класса в пространстве имен, но для предотвращения ошибок времени выполнения и сохранить сортировку кода, я предпочитаю это сделать.
3 ответа
Вы можете вставить JSON в качестве классов в Visual Studio.
Он создаст классы с текущим пространством имен. Просто создайте новый класс, «вставьте JSON в качестве классов», и он создаст каждую модель от JSON на буфер обмена.
Для изменения пространства имен существующего класса вы можете щелкнуть правой кнопкой мыши на текущем пространстве имен и выберите Reamage - & GT; Перейдите на новое NameSpace- & GT; Нажмите Применить .
Если у вас есть несколько глубин пространства имен, Visual Studio не позволит вам вводить точки. Однако, если вы копируете и вставьте точку, она добится успеха, несмотря на предупреждение.
Вы также можете переместить класс на измененное целевое пространство имен.
1. Нажмите на имя класса, которое вы хотите переместить - & gt; Выберите Быстрые действия и рефакторины . - & gt; Нажмите Перейти к пространству имен .
2. В диалоговом окне, который открывается, выберите целевое пространство имен, которое вы хотите переместить тип.
В созданном проекте, можно добавить класс, в отдельном файле, который сгенерирует Visual Studio.
Правой кнопкой мыши выделите проект. Add. New Item.
Visual Studio сгенерировало класс. Пространство имен соответствует имени проекта. При желании, его можно удалить. Так же можно изменить название класса.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _0001
- class Counter
- ushort showStart;
- ushort showEnd;
- decimal price;
- public Counter( ushort arg0, ushort arg1, decimal arg2)
- showStart = arg0;
- showEnd = arg1;
- price = arg2;
- >
- public ushort ResultShow()
- return ( ushort )(showEnd-showStart);
- >
- public decimal Sum()
- return Math.Round(( decimal )(ResultShow()*price), 2);
- >
- >
- >
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _0001
- class Counter
- ushort showStart;
- ushort showEnd;
- decimal price;
- public Counter( ushort arg0, ushort arg1, decimal arg2)
- showStart = arg0;
- showEnd = arg1;
- price = arg2;
- >
- public ushort ResultShow()
- return ( ushort )(showEnd-showStart);
- >
- public decimal Sum()
- return Math.Round(( decimal )(ResultShow()*price), 2);
- >
- >
- >
- using System;
- //подключить пространство имен
- using _0001;
- class Program
- public static int Main()
- Console.WriteLine( "оплата за электроэнергию\n" );
- Console.Write( "Введите начальные показания счетчика : " );
- ushort show_start = ushort .Parse(Console.ReadLine());
- Console.Write( "Введите конечные показания счетчика : " );
- ushort show_end = ushort .Parse(Console.ReadLine());
- Console.Write( "Введите цену за 1 кВт/ч : " );
- decimal price = decimal .Parse(Console.ReadLine());
- Counter C = new Counter(show_start, show_end, price);
- Console.WriteLine( "Сумма за электроэнергию : " , C.Sum());
- Console.ReadKey();
- return 0;
- >
- >
- using System;
- //подключить пространство имен
- using _0001;
- class Program
- public static int Main()
- Console.WriteLine( "оплата за электроэнергию\n" );
- Console.Write( "Введите начальные показания счетчика : " );
- ushort show_start = ushort .Parse(Console.ReadLine());
- Console.Write( "Введите конечные показания счетчика : " );
- ushort show_end = ushort .Parse(Console.ReadLine());
- Console.Write( "Введите цену за 1 кВт/ч : " );
- decimal price = decimal .Parse(Console.ReadLine());
- Counter C = new Counter(show_start, show_end, price);
- Console.WriteLine( "Сумма за электроэнергию : " , C.Sum());
- Console.ReadKey();
- return 0;
- >
- >
оплата за электроэнергию
Введите начальные показания счетчика : 0
Введите конечные показания счетчика : 100
Введите цену за 1 кВт/ч : 0,3084
Сумма за электроэнергию : 30,84
Читайте также: