|
С# Средство разработки на платформе .Net |
29.10.2020, 16:06
|
#1
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
C# множественные сравнения сокращение записи
Существуют ли у C# инструменты сокращения записи множественного сравнения? Когда одну переменную или объект нужно сравнить с несколькими однотипными элементами или объектами.
например такое выражение:
if( a=="x" || a=="y" || a=="z" )
заменить на что-то типа этого
if( a=="x"=="y"=="z" )
...
или так
...
if( a==("x","y","z") )
Пролистал пару мануалов ничего не нашел. Т.е. возможно только сравнение через for или switch (а это раздувает код).
|
(Offline)
|
|
29.10.2020, 21:40
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
["x", "y", "z"].Contains(a)
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
30.10.2020, 00:43
|
#3
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Сообщение от Randomize
["x", "y", "z"].Contains(a)
|
https://www.jdoodle.com/compile-c-sharp-online/
Что-то не компилируется.
using System;
using System.Linq;
class HelloWorld {
static void Main() {
string a="x";
if( ["x", "y", "z"].Contains(a) ){
Console.WriteLine("a contains x");
}
}
}
Это наверное C# 7 Или C# 8
|
(Offline)
|
|
30.10.2020, 07:34
|
#4
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Модифицировал
using System; using System.Collections.Generic; using System.Linq;
class HelloWorld { static void Main() { string a="x"; if( new List<string>{"x", "y", "z"}.Contains(a) ){ Console.WriteLine("a contains x"); } } }
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
30.10.2020, 17:40
|
#5
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Как pax написал, да. Если нужно не тупое сравнение x == y, а что-то хитрее, то через тот же linq вместо contains берёшь any и в предикате любое условие.
|
(Offline)
|
|
30.10.2020, 18:40
|
#6
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Как вариант да можно... Я думал в C# ченить уже изобрели для подобных конструкций, чтобы без List и прочих классов.
|
(Offline)
|
|
30.10.2020, 20:05
|
#7
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Сообщение от Evgen
чтобы без List и прочих классов.
|
"xyz".Contains(a)
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.10.2020, 21:43
|
#8
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Сообщение от Evgen
Как вариант да можно... Я думал в C# ченить уже изобрели для подобных конструкций, чтобы без List и прочих классов.
|
Изобрели. Но не в твоей версии сишарпа, раз у тебя только через лист получается.
|
(Offline)
|
|
30.10.2020, 21:58
|
#9
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Сообщение от Andvrok
Изобрели. Но не в твоей версии сишарпа, раз у тебя только через лист получается.
|
Ссылочку дай тогда на MSDN если такой вумный.
|
(Offline)
|
|
30.10.2020, 23:12
|
#10
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Не нравится через лист, делаешь через массив, суть не меняется.
new string[] { "x", "y", "z" }.Contains(a);
Без инициализации объекта фокуса в любом случае не получится.
Хочешь удобней? Пиши себе хелперы.
class Program { static void Main(string[] args) { var a = "y"; if (a.Compare("x", "y", "z")) { Console.WriteLine("нихуясебе"); } }
}
public static class AwesomeHelpers { public static bool Compare<T>(this T what, params T[] with) { return with.Contains(what); } }
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Andvrok за это полезное сообщение:
|
|
01.11.2020, 03:13
|
#11
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Мат можно было убрать.
А то как детский сад.
Да компилятор далеко не последней версии. Лучше тогда наверное for.
|
(Offline)
|
|
01.11.2020, 05:22
|
#12
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: C# множественные сравнения сокращение записи
Сообщение от Evgen
А то как детский сад.
|
Fun fact:
Многие коллеги с шестизначной зарплатой используют мат.
Как говорит Артемий: язык профессионалов.
Но, справедливости ради, воздержитесь от обсценной лексики на публичном ресурсе, ведь для такого есть забор.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:43.
|