Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
28 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 80

Есть ли в c# аналог in_array() из php?

01.02.2019, 00:19. Показов 2551. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет, только начал разбираться в c#, решил написать простенькое консольное приложение, на одном из этапов хочу сделать выбор пунктов цифрами, но не знаю, как мой говнокод превратить во что-нибудь более читабельное. в php есть функция in_array(), которая может проверить, есть ли искомое значение в массиве, а в с# как правильно сделать ? потому что мне кажется вот это выглядит странно ))

C#
1
2
3
4
int readselect = int.Parse(Console.ReadLine());
if (readselect != 1 || readselect != 2 || readselect != 3 || readselect != 4 || readselect != 5 || readselect != 6) {
    Console.WriteLine("Неверное значение, необходимо ввести номер от 1 до 6 согласно пунктам выбора");
}
или как-нибудь в while сразу засунуть эту проверку, чтобы было ещё правильнее. помогите пожалуйста )
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2019, 00:19
Ответы с готовыми решениями:

В PHP есть parse_url(). А аналог в QT есть?
В PHP есть parse_url() - она разбивает урл на составные части. Что-нибудь аналогичное есть в QT????

Есть ли аналог PHP-шному microtime() ?
В VB ? Т.е. нужно вычислить разницу во времени между началом процесса и концом в милисекундах. Функция Time выдает время в секундах, и...

В ASP Response.Redirect(...). Есть ли аналог в PHP ?
В ASP Response.Redirect(...). Есть ли аналог в PHP ? Стоит IIS+фильтр PHP. Header(Location: ...) не работает.

8
14 / 13 / 2
Регистрация: 16.10.2018
Сообщений: 47
01.02.2019, 00:47
Цитата Сообщение от DeLaKroiX Посмотреть сообщение
потому что мне кажется вот это выглядит странно ))
C#
1
if(readselect < 1 && readselect >6)
Ну да странновато
1
28 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 80
01.02.2019, 00:52  [ТС]
точно, не подумал, что так можно, благодарю ))

Добавлено через 2 минуты
но тут ошибка возникает, если ввести в консоли не цифру... а < и > работают только с int
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
01.02.2019, 00:54
Цитата Сообщение от DeLaKroiX Посмотреть сообщение
но тут ошибка возникает, если ввести в консоли не цифру
Поэтому используют int.TryParse
1
14 / 13 / 2
Регистрация: 16.10.2018
Сообщений: 47
01.02.2019, 00:57
Цитата Сообщение от DeLaKroiX Посмотреть сообщение
если ввести в консоли не цифру
Ну так понятно дело ибо символ не всегда является числом)
Используйте TryParse()

C#
1
int.TryParse(Console.ReadLine(), out var readselect)
1
28 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 80
01.02.2019, 01:22  [ТС]
благодарю
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
01.02.2019, 01:33
Лучший ответ Сообщение было отмечено DeLaKroiX как решение

Решение

Цитата Сообщение от DeLaKroiX Посмотреть сообщение
а в с# как правильно сделать ?
Зачем вам вообще парсить ввод?
Сделайте через оператор switch, вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        static void Main(string[] args)
        {
            while (true)
            {
                //вывод меню
                //...
 
                //обработка выбора пользователя
                switch (Console.ReadLine())
                {
                    case "1": /*...*/ break;
                    case "2": /*...*/ break;
                    case "3": /*...*/ break;
                    case "4": /*...*/ break;
                    case "5": /*...*/ break;
                    case "6": /*...*/ break;
                    default:
                        Console.WriteLine("Неверное значение, необходимо ввести номер от 1 до 6 согласно пунктам выбора");
                        break;
                }
            }
        }
Такой способ позволяет и отсечь неправильный ввод, и вводить не только числовые значения.
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.02.2019, 10:48
Если хочется красивостей и "чтобы как в Пыхе":
C#
1
2
3
4
static class Extensions
{
   public static bool In<T>(this T value, params T[] values) => values.Contains(value);
}
Использование:
C#
1
2
3
var value = Console.ReadLine();
if (value.In("1", "2", "3", "4", "5", "6"))
   Console.WriteLine("Не то!");
1
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
01.02.2019, 15:35
If you do not study and do not use TDD or BDD, please, ignore my message.

I study how to write executable specifications in the form of unit tests with these books:
I check that input is [1, 6], not null and not empty. And if there is not command in the specification the exception will throw.

Program.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
 
namespace VerifyMenuInput
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                // User input command
                // ...
                // For example:
                string command = "s";
 
                // Varify the user input command
                try
                {
                    command = Kata.VerifyMenuInput(command);
                }
                catch (ArgumentException e)
                {
                    Console.WriteLine(e.Message);
                    Console.ReadKey();
                }
 
                // Handle the user input command
                // ...
            }
        }
    }
}
Kata.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
 
public class Kata
{
    public static string VerifyMenuInput(string input)
    {
        if (input == null)
        {
            throw new ArgumentException("Input is null");
        }
 
        if (input == "")
        {
            throw new ArgumentException("Input is empty");
        }
 
        int commandInt;
        bool success = int.TryParse(input, out commandInt);
        if (!success)
        {
            throw new ArgumentException("String input is not valid");
        }
 
        if (commandInt < 1 || 6 < commandInt)
        {
            throw new ArgumentException("Number input is not valid");
        }
 
        return input;
    }
}
KataTests.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using NUnit.Framework;
 
namespace VerifyMenuInput_UnitTests
{
    [TestFixture]
    public class KataTests
    {
        [TestCase("1", "1")]
        [TestCase("2", "2")]
        [TestCase("3", "3")]
        [TestCase("4", "4")]
        [TestCase("5", "5")]
        [TestCase("6", "6")]
        public void VarifyMenuInput_ValidCommands_ReturnsCommands(string inputCommand, string expectedCommand)
        {
            // Act
            string actualCommand = Kata.VerifyMenuInput(inputCommand);
 
            // Assert
            Assert.AreEqual(expectedCommand, actualCommand);
        }
 
        [Test]
        public void VerifyMenuInput_EmptyInput_Throws()
        {
            // Arrange
            string input = "";
 
            // Act
            var ex = Assert.Throws<ArgumentException>(() => Kata.VerifyMenuInput(input));
 
            // Assert
            StringAssert.Contains("Input is empty", ex.Message);
        }
 
        [Test]
        public void VerifyMenuInput_NullInput_Throws()
        {
            // Arrange
            string input = null;
 
            // Act
            var ex = Assert.Throws<ArgumentException>(() => Kata.VerifyMenuInput(input));
 
            // Assert
            StringAssert.Contains("Input is null", ex.Message);
        }
 
        [Test]
 
        public void VeryfiMenuInput_NumberInputIsNotValid_Throws()
        {
            // Arrange
            string notValidInputCommand = "0";
 
            // Act
            var ex = Assert.Throws<ArgumentException>(() => Kata.VerifyMenuInput(notValidInputCommand));
 
            // Assert
            StringAssert.Contains("Number input is not valid", ex.Message);
        }
 
        public void VeryfiMenuInput_StringInputIsNotValid_Throws()
        {
            // Arrange
            string notValidInputCommand = "s";
 
            // Act
            var ex = Assert.Throws<ArgumentException>(() => Kata.VerifyMenuInput(notValidInputCommand));
 
            // Assert
            StringAssert.Contains("String input is not valid", ex.Message);
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.02.2019, 15:35
Помогаю со студенческими работами здесь

Есть ли аналог var_dump из php и правильно ли я подгружаю другой js файл?
У меня есть js файл js.js. function follow() { document.getElementById(&quot;pop&quot;).innerHTML = &quot;text777&quot;; } function follow1(){ ...

есть ли в php аналог функции XIRR? (XIRR-функция Excel)
XIRR(values,dates) Описание: Функция XIRR вычисляет внутреннюю скорость возврата вложений, который необязательно производится...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
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, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru