Могу ли я сделать какое-то время l oop, если переменная не является ни одним из 4 значений? - PullRequest
0 голосов
/ 20 февраля 2020

Прежде всего, извините за вопрос, звучит ли это глупо (только что начал программировать), и я не очень хорош в английском sh.

Итак, я хочу сделать некоторое время l oop, чтобы активируется, когда переменная не является ни одним из 4 строковых значений. что-то вроде этого: while(var != ["str1", "str2", "str3", "str4"]){ И я хотел бы знать, как написать это или другой способ сделать это. спасибо.

Ответы [ 5 ]

2 голосов
/ 20 февраля 2020

Если ваши строки жестко запрограммированы, «тупой» способ сделать это:

while (var != "str1" && var != "str2"...) {

Если строки являются частью коллекции, вы можете использовать collection.Contains(var) или что-то в этом роде.

Другим способом является метод расширения :

    public static bool In<T>(this T t, params T[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            if (t.Equals(array[i]))
            {
                return true;
            }
        }

        return false;
    }

Тогда вы можете просто сделать var.In("str1", "str2", "str3", "str4").

1 голос
/ 20 февраля 2020

Я думаю, что с Linq вы могли бы сделать sh что-то вроде этого:

var invalid = new string[]{ "str1", "str2", "str3", "str4"};
var value = Console.ReadLine();

while(!invalid.Contains(value))
{
    // whatever you need inside the loop
}
0 голосов
/ 20 февраля 2020

не является ни одним из 4 строковых значений

На самом деле это может быть буквально переведено в linq C# код:

string [] set = new string[]{ "str1", "str2", "str3", "str4"};

while (!set.Any(x => x == myValue))
{
    // ...
}
0 голосов
/ 20 февраля 2020

Самый простой способ сделать это будет:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("--Start--");
        Console.WriteLine("Enter value:");
        var x = Console.ReadLine();
        while(x != "a" && x != "b" && x != "c" && x != "d")
        {
            Console.WriteLine("Try again");
            x = Console.ReadLine();
        }

        Console.WriteLine("--End--");
        Console.Read();
    }
}
0 голосов
/ 20 февраля 2020

Когда вы новичок в программировании,

while (условие1 && условие2 && ....) будет понятно.

Но если число строк увеличивается экспоненциально, чем написать функцию которые возвращают true или false и вызывают это как условие для цикла while ex bool function (val) {// SOS возвращает true, только если не равно всем строкам, в противном случае возвращает false

} и в то время как l oop

while (функция (v))

...