如果我想为多个对象分配相同的值,我会使用这样的方法:
string1 = string2 = string3 = string 4 = "some string";
我想将 string1、string2、string3 和 string4 与“someotherstring”进行比较。有没有什么方法可以做到这一点而不需要编写单独的比较? 即
string1 == "someotherstring" || string2 == "someotherstring" || string3 == "someotherstring" || string4 == "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
}
对于您的情况,您可以尝试这样的事情
if (new string[] { string1, string2, string3, string4 }.Contains("someotherstring"))
{
}
我发现 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 );
我不这么认为。您怎么知道哪一个没有比较或匹配。无法评估这种比较的副作用。