Сортировка в visual studio
Sort lines of text in Visual Studio Code. The following types of sorting are supported:
Command | Title | Comments |
---|---|---|
sortLines.sortLines | Sort lines (ascending, case sensitive) | Keybound to F9* |
sortLines.sortLinesCaseInsensitive | Sort lines (ascending, case insensitive) | |
sortLines.sortLinesCaseInsensitiveUnique | Sort lines (unique ascending, case insensitive) | |
sortLines.sortLinesReverse | Sort lines (descending, case sensitive) | Reverse character code based sort |
sortLines.sortLinesLineLength | Sort lines (line length ascending) | |
sortLines.sortLinesLineLengthReverse | Sort lines (line length descending) | |
sortLines.sortLinesVariableLength | Sort lines (variable length ascending) | |
sortLines.sortLinesVariableLengthReverse | Sort lines (variable length descending) | |
sortLines.sortLinesNatural | Sort lines (natural) | Sorts alphabetically but groups multi-digit numbers (Wikipedia) |
sortLines.sortLinesUnique | Sort lines (unique ascending, case sensitive) | Regular character code keeping only unique items |
sortLines.sortLinesShuffle | Sort lines (shuffle) | |
sortLines.removeDuplicateLines | Sort lines (remove duplicate lines) |
* Note that this overrides the toggle breakpoint keybinding, you can unbind it by adding this to your keybindings.json file:
Name | Description | Default |
---|---|---|
sortLines.filterBlankLines | (boolean) Filter out blank (empty or whitespace-only) lines. | false |
sortLines.sortEntireFile | (boolean) Sort entire file if no selection is active. | false |
- Open VS Code
- Press F1
- Type "install"
- Select "Extensions: Install Extension".
- Select sort-lines from the list
Select the lines to sort, press F1 type sort and select the desired sort. The regular sort has the default hotkey F9.
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сортирует содержимое элемента управления DataGridView.
Перегрузки
Сортирует содержимое элемента управления DataGridView, используя реализацию интерфейса IComparer.
Сортирует содержимое элемента управления DataGridView по убыванию или по возрастанию, основываясь на содержимом указанного столбца.
Sort(IComparer)
Сортирует содержимое элемента управления DataGridView, используя реализацию интерфейса IComparer.
Параметры
Реализация объекта IComparer, выполняющего операцию пользовательской сортировки.
Исключения
comparer имеет значение null .
Параметру VirtualMode задается значение true .
-или- DataSource не является null .
Примеры
В следующем примере кода показано, как использовать перегрузку Sort метода в сценарии сортировки нескольких столбцов. В этом примере IComparer интерфейс реализуется в RowComparer классе.
Комментарии
Этот метод позволяет выполнять расширенную настройку функции сортировки DataGridView класса. Чтобы реализовать высоконастройную операцию сортировки, можно написать обработчик событий для ColumnHeaderMouseClick события и вызвать этот метод с экземпляром класса, реализующего System.Collections.IComparer интерфейс в качестве параметра. В этом случае обычно для свойства DataGridViewColumnSortMode.Programmatic необходимо DataGridViewColumn.SortMode отключить автоматическую сортировку и оставить место для глифа сортировки. При сортировке по столбцам, установленным в режим программной сортировки, необходимо отобразить глиф сортировки самостоятельно, задав DataGridViewColumnHeaderCell.SortGlyphDirection свойство.
Этот метод работает только в том случае, DataSource если свойство не задано. При привязке элемента управления к внешнему DataGridView источнику данных необходимо использовать операции сортировки, предоставляемые этим источником данных. При предоставлении собственного источника данных путем реализации виртуального режима необходимо также самостоятельно обрабатывать операции сортировки.
Вызов этого метода автоматически задает CurrentCell для свойства null значение .
См. также раздел
Применяется к
Sort(DataGridViewColumn, ListSortDirection)
Сортирует содержимое элемента управления DataGridView по убыванию или по возрастанию, основываясь на содержимом указанного столбца.
Параметры
Столбец, по которому выполняется сортировка содержимого DataGridView.
Одно из значений перечисления ListSortDirection.
Исключения
Указанный столбец не является частью этого DataGridView.
-или- Свойство DataSource задано, и свойство IsDataBound указанного столбца возвращает false .
dataGridViewColumn имеет значение null .
Для свойства VirtualMode задано значение true , и свойство IsDataBound указанного столбца возвращает false .
-или- Объект, указанный свойством DataSource, не реализует интерфейс IBindingList.
-или- Объект, указанный свойством DataSource, имеет значение свойства SupportsSorting, равное false .
Примеры
В следующем примере кода показано, как использовать Sort его в программной сортировке.
Комментарии
Этот метод сортирует содержимое столбца DataGridView путем сравнения значений в указанном столбце. По умолчанию операция сортировки будет использовать Compare метод для сравнения пар ячеек в столбце с помощью DataGridViewCell.Value свойства.
Для столбцов со свойством SortMode DataGridViewColumnSortMode.Automatic, для которых задано значение , SortedColumn и SortOrder свойства задаются автоматически, и отображается соответствующий глиф сортировки. Для столбцов с заданным DataGridViewColumnSortMode.Programmaticсвойством SortMode необходимо отобразить глиф сортировки DataGridViewColumnHeaderCell.SortGlyphDirection самостоятельно через свойство.
Операцию сортировки, используемую этим методом, можно настроить, обрабатывая SortCompare событие. Это событие возникает только в том случае, если DataSource свойство не задано.
DataSource Если свойство задано, этот метод работает только для столбцов, привязанных к данным. Столбцы, привязанные к данным, имели набор свойств DataGridViewColumn.DataPropertyName . Это приводит DataGridViewColumn.IsDataBound к возврату true свойства.
Если элемент DataGridView управления содержит как привязанные, так и несвязанные столбцы, необходимо реализовать виртуальный режим для поддержания значений несвязанных столбцов при сортировке элемента управления по связанному столбцу. Это можно сделать, задав VirtualMode для свойства true значение события и обрабатывая его CellValueNeeded . Если столбец редактируется, необходимо также обработать CellValuePushed событие. Дополнительные сведения о виртуальном режиме см. в разделе "Практическое руководство. Реализация виртуального режима в элементе управления DataGridView Windows Forms". Сортировка по несвязанным столбцам, если элемент управления привязан к данным не поддерживается.
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Сортирует элементы в диапазоне элементов списка List с помощью указанной функции сравнения.
Sort(Comparison)
Параметры
Исключения
comparison имеет значение null .
Реализация comparison вызвала ошибку во время сортировки. Например, comparison не может возвратить 0 при сравнении элемента с самим собой.
Примеры
В следующем коде демонстрируются перегрузки Sort и Sort методы для простого бизнес-объекта. Sort Вызов метода приводит к использованию средства сравнения по умолчанию для типа части, и Sort метод реализуется с помощью анонимного метода.
В следующем примере показана перегрузка Sort(Comparison) метода.
В этом примере определяется альтернативный метод сравнения для строк с именем CompareDinosByLength . Этот метод работает следующим образом: во-первых, сравниваемые методы проверяются для null , а пустая ссылка обрабатывается как меньше, чем значение, отличное от NULL. Во-вторых, сравниваются длины строк, а длинная строка считается большей. В-третьих, если длина равна, используется обычное сравнение строк.
Комментарии
Если comparison это null так, ArgumentNullException создается исключение.
Этот метод использует , который применяет Array.Sortинтроспективные сортировки следующим образом:
Если размер секции меньше или равен 16 элементам, он использует алгоритм сортировки вставки.
Если число секций превышает 2 журнала n, где n — это диапазон входного массива, он использует алгоритм Heapsort .
В противном случае используется алгоритм Quicksort.
Эта реализация выполняет неустойчивую сортировку; то есть, если два элемента равны, их порядок может не сохраняться. В отличие от этого, стабильная сортировка сохраняет порядок элементов, равных.
Этот метод является операцией O(n log n), где n — Count.
См. также раздел
Применяется к
Sort(Int32, Int32, IComparer)
Сортирует элементы в диапазоне элементов списка List с помощью указанной функции сравнения.
Параметры
Индекс (с нуля) начала диапазона, который требуется отсортировать.
Длина диапазона сортировки.
Исключения
Значение параметра index меньше 0.
-или- Значение параметра count меньше 0.
index и count не указывают допустимый диапазон в List .
-или- Реализация comparer вызвала ошибку во время сортировки. Например, comparer не может возвратить 0 при сравнении элемента с самим собой.
comparer является null , и функция сравнения по умолчанию Default не может найти реализацию универсального интерфейса IComparable или интерфейса IComparable для типа T .
Примеры
В следующем примере показана перегрузка Sort(Int32, Int32, IComparer) метода и перегрузка BinarySearch(Int32, Int32, T, IComparer) метода.
В этом примере определяется альтернативный компаратор для строк с именем DinoCompare, который реализует IComparer универсальный интерфейс ( IComparer(Of String) в Visual Basic IComparer в Visual C++). Средство сравнения работает следующим образом: во-первых, сравниваемые методы проверяются, null а пустая ссылка обрабатывается как меньше, чем значение, отличное от null. Во-вторых, сравниваются длины строк, а длинная строка считается большей. В-третьих, если длина равна, используется обычное сравнение строк.
Комментарии
Если comparer это так null , средство Comparer.Default сравнения по умолчанию проверяет, реализует ли тип T универсальный IComparable интерфейс и использует такую реализацию, если она доступна. В противном случае проверяет, Comparer.Default реализует IComparable ли тип T интерфейс. Если тип T не реализует ни один интерфейс, Comparer.Default вызывает исключение InvalidOperationException.
Этот метод использует , который применяет Array.Sortинтроспективные сортировки следующим образом:
Если размер секции меньше или равен 16 элементам, он использует алгоритм сортировки вставки.
Если число секций превышает 2 журнала n, где n — это диапазон входного массива, он использует алгоритм Heapsort .
В противном случае используется алгоритм Quicksort.
Эта реализация выполняет неустойчивую сортировку; то есть, если два элемента равны, их порядок может не сохраняться. В отличие от этого, стабильная сортировка сохраняет порядок элементов, равных.
Этот метод является операцией O(n log n), где n — Count.
См. также раздел
Применяется к
Исключения
Функция сравнения по умолчанию Default не может найти реализацию универсального интерфейса IComparable или интерфейса IComparable для типа T .
Примеры
В следующем примере добавляются некоторые имена к объекту List , отображается список в несортированном порядке, вызывается Sort метод, а затем отображается отсортированный список.
В следующем коде демонстрируются перегрузки Sort() и Sort(Comparison) методы для простого бизнес-объекта. Sort() Вызов метода приводит к использованию средства сравнения по умолчанию для типа части, и Sort(Comparison) метод реализуется с помощью анонимного метода.
Комментарии
Этот метод использует средство Comparer.Default сравнения по умолчанию для типа T для определения порядка элементов списка. Свойство Comparer.Default проверяет, реализует ли тип T универсальный IComparable интерфейс и использует ее, если она доступна. В противном случае проверяет, Comparer.Default реализует IComparable ли тип T интерфейс. Если тип T не реализует ни один интерфейс, Comparer.Default вызывает InvalidOperationExceptionисключение .
Этот метод использует Array.Sort метод, который применяет интроспективные сортировки следующим образом:
Если размер секции меньше или равен 16 элементам, он использует алгоритм сортировки вставки.
Если число секций превышает 2 журнала n, где n — это диапазон входного массива, он использует алгоритм Heapsort.
В противном случае используется алгоритм Quicksort.
Эта реализация выполняет нестабильную сортировку; то есть, если два элемента равны, их порядок может не сохраняться. В отличие от этого, стабильная сортировка сохраняет порядок элементов, равных.
Этот метод является операцией O(n log n), где n — Count.
Имеет ли Visual Studio средства с помощью которых можно было бы выполнить сортировку методов в коде? Например, по алфавиту, по доступу и т п?
Если нет, то какие есть решения?
Панель Class View. В Settings можно выбрать, что показывать. В нижней панели можно включить нужную сортировку.
Хм, а зачем? Надо сортировать методы от высокоуровневых к низкоуровневых, автоматика с этим никакая не справится
3 ответа 3
- форматировать код
- удалять пустые строки
- сортировать пространства имен
- добавлять пропущенные модификаторы доступа
и другое.
В том числе это расширение умеет и выполнять сортировку элементов класса документа по алфавиту(функция называется Code Reorganizing).
Расширение имеет два критерия сортировки:
- тип элемента
- уровень доступа элемента
Вот так выглядит основная его страница с настройками сортировки
Как видим, мы можем выбрать порядок критериев сортировки(что главнее, тип элемента, или доступ).
Каждый критерий имеет дополнительные настройки:
1. Критерий уровень доступа на этой же странице имеется переключатель для настройки порядка сортировки(от public к private или наоборот).
2. Критерий тип элемента настраивается на отдельной странице, где можно выбрать порядок расположения элементов. Например, можно настроить такой порядок: сначала идут конструктор(ы), потом поля класса, потом свойства, потом методы и так далее) Внутри группы элементы будут сортироваться по алфавиту! Обратный порядок сортировки у меня не работает!
Также типы элементов можно объединять в одну группу, чтобы внутри группы элементы имели равный приоритет и сортировались по алфавиту. Для примера, в приведенной настройке выше указано, что конструктор и поля класса должны сортироваться по алфавиту в одной группе(пример не совсем удачный, но это пример). Соответственно, конструктор класса будет отсортировать куда-то "в середину" полей класса.
Вызвать сортировку элементов вы можете через главное меню в VS или через контекстное меню редактора. Пункт меню для текущей версии расширения называется Reorganize active document
I know that for clarity in codes, I have to write first fields then constructor and then methods etc. But how can I automate it in Visual Studio?
6 Answers 6
I think CodeMaid is the best free option for code formatting in Visual Studio.
To sort your file, open the file via solution explorer:
- Right click the open file
- Code Maid menu (likely near the top of the right click menu)
- Click Reorganize Active Document
Alternatively, using the default CodeMaid hotkeys CTRL + M , Z to sort your active file.
It didn't work as expected for me. It grouped properties with no reason, added spaces between some of them and removed the space between the comment and the property before that.
Visual Studio has a popup dialog that lets you manually reorder the parameters in a method when you change the method signature. I want that same manual functionality while reordering the members in a class. Does CodeMaid let you do that or does it just sort automatically?
According to the homepage of the project, it supports up to Visual Studio 2022. You can combine CodeMaid with the additional extension CM+ for even better formatting. I have tried it on some sample code, works just fine, and easy to use. Thank you!
I am wondering if CodeMaid could re-organize methods decorated with [Obsolete(. )] (group them together, move them to the end of the class etc)?
ReSharper provides both - an easy way to configure and trigger the sorting of class members.
Configuration
Triggering
If you use the Visual Studio keyboard scheme (ReSharper Options > Visual Studio Integration) and press Ctrl+E,F for Silent Code Cleanup. A dialog will pop up, where you can select a Code Cleanup setting. For this setting you should check Reorder type members. The second time you press the shortcut, ReSharper will automatically reorder your class members.
Читайте также: