Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/46: Рейтинг темы: голосов - 46, средняя оценка - 4.85
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676

OrderBy() и иже с ним

21.01.2019, 13:09. Показов 9160. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть такой код
C#
1
2
3
4
5
6
7
8
9
static List<string> strout = new List<string>();
StreamWriter writer = new StreamWriter(@"c:\bits.txt");
...
strout.Add("ТекстX");
...
strout.Add("ТекстY");
...
IEnumerable<string> sortAscendingQuery = from str1 in strout orderby str1 select str1;
foreach (string s in sortAscendingQuery) writer.WriteLine(s);
где X-Y это разные числа, в итоге нужно текст получить отсортированным. Этот код это и делает. Но, как пишут многие ресурсы, быстрее использовать OrderBy() и оператор =>, но я не могу понять как оформить его использование, например
C#
1
foreach (string s in strout.OrderBy(x => strout.ToString())) writer.WriteLine(s);
или
C#
1
foreach (string s in strout.OrderBy(x => strout)) writer.WriteLine(s);
ничего не делают. Примеры в основном показывают на массивах, а у меня список, может со списком нужно работать как-то иначе?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.01.2019, 13:09
Ответы с готовыми решениями:

Combobox и иже с ним
Здравствуйте, уважаемые. Необходима помощь и разъяснения начинающему...в приложенном файле не могу записать 2 раза подряд информацию из...

AJAX и иже с ним
Доброго времени суток, господа программисты. У меня следующая проблема: есть игра (в рамках проектной работы по одной дисциплине),...

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

29
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
21.01.2019, 13:13
Лучший ответ Сообщение было отмечено belalugoci как решение

Решение

belalugoci,
C#
1
foreach (string s in strout.OrderBy(x => x)) writer.WriteLine(s);
Добавлено через 47 секунд
А вообще можно Sort() использовать
1
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
21.01.2019, 13:16  [ТС]
Цитата Сообщение от Ellizio Посмотреть сообщение
x => x
а что вообще такое этот Икс? Просто формальность?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18281 / 14204 / 5368
Регистрация: 17.03.2014
Сообщений: 28,883
Записей в блоге: 1
21.01.2019, 13:29
Цитата Сообщение от belalugoci Посмотреть сообщение
Этот код это и делает. Но, как пишут многие ресурсы, быстрее использовать OrderBy() и оператор =>
Между orderby и методом OrderBy нет никакой разницы. Это одно и тоже на самом деле. "Многие ресурсы" говорят неправду или ты их неверно понял. С точки зрения эффективности скорее лучше использовать метод Sort самого списка т.к, он выполняет сортировку по месту без дополнительных выделений памяти.
2
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
21.01.2019, 14:44
Цитата Сообщение от belalugoci Посмотреть сообщение
а что вообще такое этот Икс? Просто формальность?
Это лямбда возвращающая ключ, по которому будет производиться сортировка.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
22.01.2019, 05:00  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Это лямбда возвращающая ключ, по которому будет производиться сортировка.
это я прочитал на msdn, дело в том что нет описания почему x и откуда он знает что именно я хочу. а значит указание носит формальный характер.
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
22.01.2019, 05:52
belalugoci, x - имя параметра лямбды. Можно назвать как душе угодно, лишь бы это имя не пересекалось с именем из локального скоупа, где лямбда объявляется.

Добавлено через 1 минуту
Цитата Сообщение от belalugoci Посмотреть сообщение
откуда он знает что именно я хочу
Вы "ему" сами это говорите возвращая значение из лямбды (x => x).
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
22.01.2019, 07:33  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
имя параметра лямбды. Можно назвать как душе угодно, лишь бы это имя не пересекалось с именем из локального скоупа, где лямбда объявляется.
это понятно из описания на msdn.

Цитата Сообщение от Usaga Посмотреть сообщение
Вы "ему" сами это говорите возвращая значение из лямбды (x => x).
хм, ничего подобного, я написал этот икс просто от балды не понимая процесса, как было написано в примерах, где тоже ничего не написано про то, почему именно икс.
я, допустим, понимаю такое применение:
C#
1
2
3
4
5
6
7
8
For(dimIdxStart, dimIdxEnd, y =>
{
    ref int tempIndex2 = ref countNidx[SumBits];
    if (Hash64 == DimBitsSN[y].Hash64)
    {
        countX++;
    }
});
тут y идёт в код лямбды.
Но в варианте x => x это какая-то условность, так как она ничего не делает, икс объявлено от балды и в коде тоже ничего не делает. Вот и не понятно почему C# такую бестолковость воспринимает как "сортировать список strout". то есть вместо
C#
1
foreach (string s in strout.OrderBy(x => x)) writer.WriteLine(s);
было бы логичнее просто написать
C#
1
foreach (string s in strout.OrderBy()) writer.WriteLine(s);
мы же не пишем
C#
1
Console.WriteLine(a.ToString(x => x));
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
22.01.2019, 07:40
Цитата Сообщение от belalugoci Посмотреть сообщение
это понятно из описания на msdn.
Тогда в чём вопрос?

Цитата Сообщение от belalugoci Посмотреть сообщение
хм, ничего подобного, я написал этот икс просто от балды не понимая процесса, как было написано в примерах, где тоже ничего не написано про то, почему именно икс.
Ещё раз: x - произвольное имя параметра.

Зачем вообще нужна лямбда? Очень просто: у вас может быть коллекция составных объектов, а не только примитивов из строк\чисел. Т.е. у вас может быть массив объектов класса User с десятком-другим свойств. По каким критериям OrderBy должен эти объекты сортировать? Вот для этого и нужна эта лямбда.

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

В случае с коллекцией примитивов, такой подход избыточен немного, но это задел на более сложные сценарии.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
22.01.2019, 08:16  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
В случае с коллекцией примитивов, такой подход избыточен немного
об этом и речь.

Цитата Сообщение от Usaga Посмотреть сообщение
Это может быть имя пользователя, возраст, номер ИНН, что угодно - методу сортировки до фонаря, лишь бы это было сравниваемое значение.
Обычно метода перегружают, чтобы варьировать варианты использования. Так как конструкция x => x в данном случае избыточна, то напрашивается какая-то вариация где это писать не потребуется.

или ещё
C#
1
2
3
4
5
6
7
foreach (IGrouping<string, Phone> g in phoneGroups)
{
    Console.WriteLine(g.Key);
    foreach (var t in g)
        Console.WriteLine(t.Name);
    Console.WriteLine();
}
откуда вообще взялся g.Key? в описании и примера об этом ни слова, могу лишь предположить, что это результат работы запроса
C#
1
2
var phoneGroups = from phone in phones
                  group phone by phone.Company;
так как формально не ясно что именно будет в таком результате.
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
22.01.2019, 08:20
Цитата Сообщение от belalugoci Посмотреть сообщение
об этом и речь.
Это вам так жить мешает?

Цитата Сообщение от belalugoci Посмотреть сообщение
Обычно метода перегружают, чтобы варьировать варианты использования. Так как конструкция x => x в данном случае избыточна, то напрашивается какая-то вариация где это писать не потребуется.
Нет, не напрашивается. Я впервые вижу человека, которому эта лямбдочка помешала.

Цитата Сообщение от belalugoci Посмотреть сообщение
откуда вообще взялся g.Key?
Свойство объявленное в интерфейсе IGrouping<A, B>

Цитата Сообщение от belalugoci Посмотреть сообщение
так как формально не ясно что именно будет в таком результате.
Вообще-то ясно. Можно даже курсор мыши навести на phoneGroups и увидеть подсказку.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
22.01.2019, 09:19
Цитата Сообщение от belalugoci Посмотреть сообщение
Обычно метода перегружают, чтобы варьировать варианты использования.
Метод называется "СортироватьПо".
Сортировать по чему?

На вход этот метод просит ссылку на другой метод, в который будет передаваться каждый элемент сортируемой коллекции и который вернет значение, по которому надо отсортировать коллекцию. Поскольку вы используете само значение как ключ сортировки, постольку ваш метод возвращает само передаваемое значение.
Аналог вашей лямбды:
C#
1
2
3
4
5
6
7
var list = new List<int>();
list.OrderBy(KeySelector);
 
int KeySelector(int x)
{
   return x;
}
Добавлено через 2 минуты
Цитата Сообщение от belalugoci Посмотреть сообщение
откуда вообще взялся g.Key?
Переменная g имеет тип IGrouping<string, Phone> — вы сами его в цикле объявили.
Интерфейс IGrouping выглядит примерно так:
C#
1
2
3
4
public interface IGrouping<TKey, TValue> : IEnumerable<TValue>
{
   TKey Key { get; }
}
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
22.01.2019, 09:34  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Это вам так жить мешает?
Это мешает пониманию.

Цитата Сообщение от Usaga Посмотреть сообщение
Нет, не напрашивается. Я впервые вижу человека, которому эта лямбдочка помешала.
Люди вообще склонны не задавать вопросы.

Цитата Сообщение от Usaga Посмотреть сообщение
Вообще-то ясно. Можно даже курсор мыши навести на phoneGroups и увидеть подсказку.
Читая текст на сайте с примером можно хоть занаводиться мышкой - никакой подсказки не будет.

Цитата Сообщение от kolorotur Посмотреть сообщение
Метод называется "СортироватьПо".
Сортировать по чему?
для ToString() - метод называется "ВСтроку", но совсем не указано из чего, то есть подразумевается что из класса выше по тексту. Поэтому GroupBy() без параметров вполне самодостаточный и понятный.

C#
1
2
3
4
5
6
7
var list = new List<int>();
list.OrderBy(KeySelector);
 
int KeySelector(int x)
{
   return x;
}
думаю это самое лучшее объяснение с точки зрения построения кода, но совсем не объясняющее связь с list.
поэтому я и говорю, что это условности, типа надо здесь всегда ставить "2", вот все и ставят. Это как сравнение C# и F# на Хабре с обязательным указанием {get; set;} которые не нужны вовсе.

Цитата Сообщение от kolorotur Посмотреть сообщение
Переменная g имеет тип IGrouping<string, Phone> — вы сами его в цикле объявили.
визуально Key нигде не виден, поэтому читая msdn иногда не ясно откуда что-то берётся.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
22.01.2019, 09:46
Цитата Сообщение от belalugoci Посмотреть сообщение
для ToString() - метод называется "ВСтроку", но совсем не указано из чего
Ну как же не указано?
Указано — слеваа от точки:
C#
1
2
var something = ....
something.ToString()
something to string. Читается фактически как обычный текст, "объект в строку".

А вот вариант с something.OrderBy — something order by ... what? Объект сортировать по чему?

Цитата Сообщение от belalugoci Посмотреть сообщение
Поэтому GroupBy() без параметров вполне самодостаточный и понятный.
Вместо GroupBy вы имели в виду OrderBy?
Никто не запрещает добавить свое расширение:
C#
1
2
3
4
static class LinqExtensions
{
   public static IOrderedEnumerable<T> OrderBy(this IEnumerable<T> c) => c.OrderBy(x => x);
}
Использование:
C#
1
2
IEnumerable<int> collection = ...
collection.OrderBy();
Название метода, конечно, выглядит кривовато с отсутствием аргументов (можно изменить просто на Order), но то, что вам надо, вполне выполняет.

Цитата Сообщение от belalugoci Посмотреть сообщение
но совсем не объясняющее связь с list.
О какой связи идет речь?

Цитата Сообщение от belalugoci Посмотреть сообщение
поэтому я и говорю, что это условности, типа надо здесь всегда ставить "2", вот все и ставят.
Культ карго в программировании — это плохо, да.
Потому хорошо иметь именно понимание — почему это делается так, а не иначе.

Цитата Сообщение от belalugoci Посмотреть сообщение
визуально Key нигде не виден
Что значит "визуально"?
Не совсем понятно.
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
22.01.2019, 10:17
Цитата Сообщение от belalugoci Посмотреть сообщение
Это мешает пониманию.
Нет, не мешает. Достаточно открыть документацию на метод и понять, что за лямбду и для чего он принимает.

Цитата Сообщение от belalugoci Посмотреть сообщение
Читая текст на сайте с примером можно хоть занаводиться мышкой - никакой подсказки не будет.
Будет. Нужно посмотреть документацию на используемый в тексте на сайте метод.

Цитата Сообщение от belalugoci Посмотреть сообщение
поэтому я и говорю, что это условности, типа надо здесь всегда ставить "2", вот все и ставят.
Здесь нет никаких условностей. Всё логически верно и описано в документации. Многое выводится из названия метода. "Сортировать По" уже тонко намекает, что должно фигурировать некоторое условие.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
22.01.2019, 10:18  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Ну как же не указано?
Указано — слеваа от точки:
я же не английский изучаю.
есть класс, есть метод с ним работающий - логичная последовательная связь.

Цитата Сообщение от kolorotur Посмотреть сообщение
А вот вариант с something.OrderBy — something order by ... what? Объект сортировать по чему?
a.ToString()
a в строку без параметров
a.ToString(param);
a в строку с параметрами
a.OrderBy()
упорядочить а без параметров
a.OrderBy(param)
упорядочить a с параметрами
Вроде бы всё логично. Ведь когда мы пишем a. то мы работаем с a.

Цитата Сообщение от kolorotur Посмотреть сообщение
Никто не запрещает добавить свое расширение
Это как настроенный под себя браузер с переназначенными клавишами - удобно пока ты дома, а когда садишься за другой ПК - ничего сделать не можешь.

Цитата Сообщение от kolorotur Посмотреть сообщение
О какой связи идет речь?
её нет, в этом и суть. Если для структуры хотя бы можно частично понять зачем это нужно (хотя читая доки никто не удосуживается об этом говорить), то в случае с List<T> как таковой x вообще не нужен, а если ставится, то связь с ним отсутствует.

Цитата Сообщение от kolorotur Посмотреть сообщение
Потому хорошо иметь именно понимание — почему это делается так, а не иначе.
Было бы хорошо, когда заходишь на MSDN и читая - получаешь достаточную информацию, тогда вопросы не возникали бы. А когда просто смотришь на примеры, То читаешь вот такое:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}
 
public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };
 
    IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);
 
    foreach (Pet pet in query)
    {
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
    }
}
и хочется убиться об стену. Можно же было использовать dPet[], cPet, iPet и pets. Что за мода такая именования? А учитывая что по коду часто есть изолированные места, то можно 10 раз встретить например переменную x которая меняет порой и тип, вот и сидишь читаешь, а везде один и тот же x используется. Уж ладно когда я сам для себя пишу и так делаю, но в примерах на msdn можно было бы и по-нормальному сделать.

Цитата Сообщение от kolorotur Посмотреть сообщение
Что значит "визуально"?
Не совсем понятно.
смотришь пример на MSDN и вдруг уже g.Key с неба, откуда взялся? а хз.
0
Эксперт .NET
 Аватар для Usaga
14140 / 9369 / 1350
Регистрация: 21.01.2016
Сообщений: 35,270
22.01.2019, 10:26
Цитата Сообщение от belalugoci Посмотреть сообщение
я же не английский изучаю.
Данная специальность требует знание английского языка. Иначе никак.

Цитата Сообщение от belalugoci Посмотреть сообщение
упорядочить a с параметрами
Вроде бы всё логично. Ведь когда мы пишем a. то мы работаем с a.
Так лямбда этой логики не нарушает. Отсортировать a по условию описанному в лямбде. Лямбда - совершенно легальный параметр.

Цитата Сообщение от belalugoci Посмотреть сообщение
Это как настроенный под себя браузер с переназначенными клавишами - удобно пока ты дома, а когда садишься за другой ПК - ничего сделать не можешь.
Вы заводите хелперы (удобства) под конкретные условия, возникающие при написании вашей программы. Наивно полагать, что BCL имеет все возможные удобства для всех мыслимых случаев. Заводить расширения\хелперы - совершенно нормальное явление.

Цитата Сообщение от belalugoci Посмотреть сообщение
её нет, в этом и суть. Если для структуры хотя бы можно частично понять зачем это нужно (хотя читая доки никто не удосуживается об этом говорить), то в случае с List<T> как таковой x вообще не нужен, а если ставится, то связь с ним отсутствует.
Что?

Цитата Сообщение от belalugoci Посмотреть сообщение
Было бы хорошо, когда заходишь на MSDN и читая - получаешь достаточную информацию, тогда вопросы не возникали бы.
Там и так всё расписано нормально. Лично мне, почему-то, хватает за глаза.

Цитата Сообщение от belalugoci Посмотреть сообщение
и хочется убиться об стену. Можно же было использовать dPet[], cPet, iPet и pets. Что за мода такая именования?
Совершенно нормальный подход к именованию. Покажите на данном примере своё видение, чтобы мы могли оценить более правильный подход.

Цитата Сообщение от belalugoci Посмотреть сообщение
то можно 10 раз встретить например переменную x которая меняет порой и тип, вот и сидишь читаешь, а везде один и тот же x используется.
Да, это нормально. Контекст, где эта x существует, совершенно нагляден и ясен и никаких дополнительных телодвижений пояснительных не требует.

Цитата Сообщение от belalugoci Посмотреть сообщение
смотришь пример на MSDN и вдруг уже g.Key с неба, откуда взялся? а хз.
Из метода использованного чуть ранее в коде. Он что-то вернул. Это что-то имело определённый тип. Хотите знать какой? Милости просим на MSDN.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
22.01.2019, 10:26  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Нет, не мешает. Достаточно открыть документацию на метод и понять, что за лямбду и для чего он принимает.
Это совет как безграмотному нажимая на гиперссылки пройти через весь интернет и таким образом научиться читать.

Цитата Сообщение от Usaga Посмотреть сообщение
Будет. Нужно посмотреть документацию на используемый в тексте на сайте метод.
Мне для вас снять видео где по наведеню мышки ничего не пишется?

Цитата Сообщение от Usaga Посмотреть сообщение
Здесь нет никаких условностей. Всё логически верно и описано в документации. Многое выводится из названия метода. "Сортировать По" уже тонко намекает, что должно фигурировать некоторое условие.
a.OrderBy(x => x);
a упорядочивать по x, остается вопрос - что такое x, для чего нужно? Ведь никакой связи с a не указано. Если в VS навести мышку на x то напишется тот же тип как у a и наверное где-то кому-то информация эта полезна, но связи с a не обозначено.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
22.01.2019, 10:31
Цитата Сообщение от belalugoci Посмотреть сообщение
я же не английский изучаю.
Язык (программирования) англоговорящие придумали — под себя. Имена идентификатором в нем тоже на английском.
Через это методы там названы определенным образом, при котором их использование интуитивно понятно англоговорящим.

Цитата Сообщение от belalugoci Посмотреть сообщение
C#
1
2
a.OrderBy()
упорядочить а без параметров
Метод называется "СортироватьПо". Последнее "по" подразумевает наличие ключа для сортировки.
Отсутствие этого ключа выгляди странно для англоговорящего человека, который придумывал название этого метода.

Цитата Сообщение от belalugoci Посмотреть сообщение
Это как настроенный под себя браузер с переназначенными клавишами - удобно пока ты дома, а когда садишься за другой ПК - ничего сделать не можешь.
При использовании любого языка рано или поздно накапливается набор удобных методов, написанных самостоятельно, которые везде с собой таскаешь.
От этого, увы, никуда не деться — разработчики инструментов не могут предусмотреть все возможные варианты, потому как правило дают несколько общих, из которых уже можно самостоятельно налепить себе нужный интерфейс.

Цитата Сообщение от belalugoci Посмотреть сообщение
Было бы хорошо, когда заходишь на MSDN и читая - получаешь достаточную информацию
На MSDN все типы, их свойства и методы очень полно описаны.
Особенности работы языка во всех тонкостях задокументированы в спеке.
Всё имеется и доступно.

Цитата Сообщение от belalugoci Посмотреть сообщение
читаешь вот такое и хочется убиться об стену
А что не так в этом примере? Программа уровня Hello World, все кристально ясно.

Цитата Сообщение от belalugoci Посмотреть сообщение
Можно же было использовать dPet[], cPet, iPet и pets.
Что означают d, c, i и зачем они вообще там нужны?

Цитата Сообщение от belalugoci Посмотреть сообщение
Что за мода такая именования?
Вполне читаемые имена, безо всяких непонятных d, c и i.

Цитата Сообщение от belalugoci Посмотреть сообщение
А учитывая что по коду часто есть изолированные места, то можно 10 раз встретить например переменную x которая меняет порой и тип, вот и сидишь читаешь, а везде один и тот же x используется.
Ну если имеется коллекция элементов pets, то вполне логично, когда отдельный ее элемент именуется pet.

Цитата Сообщение от belalugoci Посмотреть сообщение
смотришь пример на MSDN и вдруг уже g.Key с неба, откуда взялся?
В смысле "откуда взялся"?
Вероятно, откуда-то из выражения, у которого есть вполне конкретный тип, который полностью задокументирован на том же MSDN — достаточно посмотреть и сразу ясно, что это за Key и откуда он взялся.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
22.01.2019, 10:40  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Данная специальность требует знание английского языка. Иначе никак.
То есть логика работы классов и методов опирается на лингвистику? Смешно.

Цитата Сообщение от Usaga Посмотреть сообщение
Так лямбда этой логики не нарушает. Отсортировать a по условию описанному в лямбде. Лямбда - совершенно легальный параметр.
Только он в этом случае ничего не значит и используется "as is".

Цитата Сообщение от Usaga Посмотреть сообщение
Что?
Как есть

Цитата Сообщение от Usaga Посмотреть сообщение
Там и так всё расписано нормально. Лично мне, почему-то, хватает за глаза.
Вы забываете что у нас весьма разный уровень квалификации и что для вас очевидно - для меня - нет.

Цитата Сообщение от Usaga Посмотреть сообщение
Совершенно нормальный подход к именованию. Покажите на данном примере своё видение, чтобы мы могли оценить более правильный подход.
Я уже показал своё видение, в бытность обучения Си и Паскалю именование переменных по их типу было нормой, например pName - указатель, sName - структура и т.д.

Цитата Сообщение от Usaga Посмотреть сообщение
Да, это нормально.
Мы видимо в разные годы начинали изучать программирование, но писать весь код с именем одной переменной но с разными типами и доступностью - это, уж извините, моветон.

Цитата Сообщение от Usaga Посмотреть сообщение
Из метода использованного чуть ранее в коде. Он что-то вернул. Это что-то имело определённый тип. Хотите знать какой? Милости просим на MSDN.
C#
1
int m = a();
читабельно, а вот
C#
1
2
a();
g.Key;
совсем нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.01.2019, 10:40
Помогаю со студенческими работами здесь

Магнитная мешалка и иже с ним
Здравствуйте уважаемые форумчане! По рабочим нуждам необходимо собрать в лабораторию магнитную мешалку. Вопрос мой будет связан...

Pipe и все иже с ним
Доброго вчемени суток не так давно мной была создана тема касательно процессов ...

FireDAC и иже с ним. Работа с SQLite
Доброго времени суток! История конечно печальна) Установил XE6 из за любопытства да и из за кроссплатформенности под ведро! ставился...

После установки сомнительной программы куча мусора в виде известного браузера и иже с ним
Открывает рекламу, меняет поисковые системы и прочие пакости! Помогите, пожалуйста! Встала вся работа :((

Orderby и вложенный from
Читаю книгу по C#. Там есть следующий пример: string arr2 = new string { &quot;gsaf&quot;, &quot;pmsc nvf a vib&quot;, &quot;Abcf&quot;, &quot;fpGmv sk&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru