Anonymous
Там указаны выступающие
Egor
А, не, это все посмотрел уже
Anonymous
И как, много русских?
Egor
Нет, но я не думаю, что это все )
Egor
Хотя..
Сергей
Ну так, улавливаю суть
В ютуб есть записи с подобных конференций. Можешь посмотреть и оценить будет ли тебе полезно.
Egor
Смотрел)
Egor
Спасибо
Сергей
и как впечатление?
Сергей
мне, например, не каждое выступление заходит. Со временем начинаю фильтровать на интересные и не интересные, а не смотреть все подряд
Egor
Меня не столько волнуют доклады, сколько оказаться в движухе этой всей, походить по стендам, пообщаться с людьми
Сергей
👍
Egor
Мой коллектив сейчас не такой большой, а я давно уже не общался в среде хороших спецов)
Egor
SITonyx (Pavel)
Подскажите, как получить из List<T> , значение второй переменной, первого значения, допустим это string
Например:
lColor.add ( new Color {num = 1, color = "red"});
Вот как можнополучить цвет, не через foreach?
Владислав
A.First().color?
Владислав
Вот тебе все цвета a.select(p=>p.color)
Никита
Никита
можно даже задавать условия IColor.First(x => x.num == 1).color
Никита
вернет цвет у первого элемента в списке, у которого num равен 1
SITonyx (Pavel)
Спасибо, а если из второго или иной элемента коллекции
Владислав
Так и подумала что спросишь)
Владислав
Подумал*
Владислав
A.skip(количество).first()
Владислав
Вообще нормальные люди в листах берут через
Владислав
Индексатор
Владислав
Нельзя взять через индексатор только перечисление
Владислав
"Linq methods" в помощь
SITonyx (Pavel)
Владислав
Не сложно, но главное запомнить, что все операции linq возвращают перечисление, с которым только методами можно работать. (Хотя можешь привести toList/toArray)
Никита
да, но перечисления работают быстрее
Владислав
В некоторых случаях требуется приводить
Владислав
Это я так, к слову
Никита
RA-TA-TATA
Ребята, кто может помочь разобрать небольшой код и некоторые участки заменить на функции?)
Никита
кидай, чем сможем - поможем
RA-TA-TATA
https://pastebin.com/RSc7Uvqx
RA-TA-TATA
Вот данный кусок я засунул в функцию static void InfoPerson();
Console.Clear();
strengthVisual = string.Empty;
agilityVisual = string.Empty;
intelligenceVisual = string.Empty;
strengthVisual = strengthVisual.PadLeft(strength, '#').PadRight(10, '_');
agilityVisual = agilityVisual.PadLeft(agility, '#').PadRight(10, '_');
intelligenceVisual = intelligenceVisual.PadLeft(intelligence, '#').PadRight(10, '_');
Console.WriteLine("Поинтов - {0}", points);
Console.WriteLine("Возраст - {0}\nСила - [{1}]\nЛовкость - [{2}]\nИнтелект - [{3}]", age, strengthVisual, agilityVisual, intelligenceVisual);
А переменные занес в глобальные с пометкой static
RA-TA-TATA
Я еще думаю, что часть от switch, то есть его кейсы сделать в виде функции
RA-TA-TATA
Не знаю пока как
RA-TA-TATA
Есть идеи?
Никита
секу
Никита
что ты хочешь сделать с кодом?
RA-TA-TATA
заменить повторяющиеся части на функции
Никита
strengthVisual = strengthVisual.PadLeft(strength, '#').PadRight(10, '_');
agilityVisual = agilityVisual.PadLeft(agility, '#').PadRight(10, '_');
intelligenceVisual = intelligenceVisual.PadLeft(intelligence, '#').PadRight(10, '_');
Никита
вот это заменить?
RA-TA-TATA
я уже заменил этот блок
RA-TA-TATA
вообще код оптимизировать, путем добавление повторяющихся блоков кода в функции
RA-TA-TATA
выше чекни
Сергей
Вот данный кусок я засунул в функцию static void InfoPerson();
Console.Clear();
strengthVisual = string.Empty;
agilityVisual = string.Empty;
intelligenceVisual = string.Empty;
strengthVisual = strengthVisual.PadLeft(strength, '#').PadRight(10, '_');
agilityVisual = agilityVisual.PadLeft(agility, '#').PadRight(10, '_');
intelligenceVisual = intelligenceVisual.PadLeft(intelligence, '#').PadRight(10, '_');
Console.WriteLine("Поинтов - {0}", points);
Console.WriteLine("Возраст - {0}\nСила - [{1}]\nЛовкость - [{2}]\nИнтелект - [{3}]", age, strengthVisual, agilityVisual, intelligenceVisual);
А переменные занес в глобальные с пометкой static
То, что ты вынес это в отдельную функцию - не необходимо. Этот код встречается только один раз. Но допустимо в целях сокращения метода main.
Сергей
Напишу пару советов, прочитай потом задашь вопросы, если не понятно
Сергей
кусок с форматированием строки лучше вынести в отдельный метод, если захочешь менять формат - легче менять в одном месте. Вот так
static string MakeAbilityString(int value)
{
return string.Empty.PadLeft(value, '#').PadRight(10, '_');
}
Сергей
такие вещи лучше писать так
Console.WriteLine($"Поинтов - {points}");
Сергей
то же относится к следующей в твоем коде строке
Сергей
там где вопрос Console.WriteLine("Какую характеристику вы хотите изменить?");, лучше дать человеку варианты выбора
Console.WriteLine("Какую характеристику вы хотите изменить? (1- сила, 2 - ...)"); считывать цифру. Так будет меньше ошибок ввода
RA-TA-TATA
То есть только с форматированием ты вынес?
RA-TA-TATA
И на счет того код, 2 раза встречался
RA-TA-TATA
Вроде как
Сергей
всё что между case "сила": и break тоже нужно вынести
Сергей
второй раз не увидел, может не долистал
RA-TA-TATA
Вот на счет кейсов тоже думал
RA-TA-TATA
Только как им передать потом те аргументы, либо как-то переписывать
Сергей
static int ChangeAbility(int value, string operation, int operandPoints, ref int points)
{
if (operation == "+")
{
int overhead = operandPoints - (10 - value);
overhead = overhead < 0 ? 0 : overhead;
operandPoints -= overhead;
}
else
{
int overhead = value - operandPoints;
overhead = overhead < 0 ? overhead : 0;
operandPoints += overhead;
}
points = operation == "+" ? points - operandPoints : points + operandPoints;
return operation == "+" ? value + operandPoints : value - operandPoints;
}
Сергей
вызов strength = ChangeAbility(strength,operation,operandPoints,ref points);
Сергей
перед параметром int operandPoints тоже нужно ref поставить
RA-TA-TATA
А в мэйне что передавать этой функции?
Сергей
в каждом case пишешь одно и то же только где нужно strength, где нужно agility в зависимости от кейса
Сергей
еще по стилистике: замени все значения 10 и 25 (всё что не равно 0 и 1) на константы с понятным именем типа const int cMaxAbilityValue = 10;
RA-TA-TATA
Так это может меняться, лишние будут консты
Сергей
10 - это константа в твоей программе, если ты захочешь сделать предельное значение 15, то придется бегать по всей программе и выискивать 10-ки, вместо изменения одной константы
RA-TA-TATA
А
Сергей
и еще перенеси ввод возраста до распределения очков. а то будешь всё время выводить возраст 0
RA-TA-TATA
Ок, спасибо рассказал так рассказал)
Сергей
обращайся :)
Tomas
привет ребята, нужна помощь
Tomas
есть 2 textBox-a: textBox1 и textBox2, мне нужно при введении значения в textBox1 моментально отображалась эта информация в textBox2
Tomas
заранее спасибо
Сергей
на первый повесь обработчик на событие TextChanged
Сергей
а там напиши примерно следующее
text2.Text = text1.Text;
Tomas
огромное спасибо !!!
выручил