Пожалуйста, посмотрите на приведенный ниже случай, конечно, это будет интересно ..
Если я хочу присвоить одно и то же значение нескольким объектам, я буду использовать что-то вроде этого
string1 = string2 = string3 = string 4 = "some string";
Теперь я хочу сравнить строки1, строку2, строку3 и строку4 с «someotherstring» ... вопросы Есть ли способ сделать это без написания индивидуального сравнения. т.е.
string1 == "someotherstring" || string2 == "someotherstring" || string3 == "someotherstring" || string4 == "someotherstring"
Надеюсь, я смог объяснить вопрос .. Пареш Ратод
В вашем случае вы можете попробовать что-то подобное
if (new string[] { string1, string2, string3, string4 }.Contains("someotherstring"))
{
}
В C# 3.0 можно написать очень тривиальный метод расширения:
public static class StringExtensions
{
public static bool In(this string @this, params string[] strings)
{
return strings.Contains(@this);
}
}
Затем использовать его так:
if ("some string".In(string1, string2, string3, string4))
{
// Do something
}
Я нахожу LINQ очень выразительным и подумал бы об использовании его для этой задачи:
new[] { string1, string2, string3, string4 }.Any(s => s == "some string")
Нет на C#, но можно было бы написать так:
(string1 == string2 && string2 == string3 &&
string3 == string4 && string4 == "someotherstring")
Вы можете создать функцию, которая упрощает чтение кода :
compareToFirst( "someotherthing", string1, string2, string3, string4);
Если вы хотите сравнить этот список строк с последовательными "другими строками", вы можете создать объект списка "myStringList", в который вы бы добавили string1/2/3/4, а затем определили функцию, которая могла бы писать
compare( "someotherthing", myStringList );
Я так не думаю. Откуда вы знаете, какой из них не сравнивал или совпадал. Оценить побочный эффект такого сравнения не получится.
.