C#多个字符串比较相同值

5
请看下面的案例,肯定很有趣。
如果我想给多个对象分配相同的值,我会使用类似这样的代码。
string1 = string2 = string3 = string 4 = "some string";

现在我想要做的是,我想将string1、string2、string3和string4与“someotherstring”进行比较...问题是是否有一种方法可以在不编写单个比较的情况下完成这个任务。
string1 == "someotherstring" || string2 == "someotherstring" || string3 == "someotherstring" || string4 == "someotherstring"

希望我已经解释清楚了问题,希望您能帮助我解决这个问题。
谢谢, Paresh Rathod

你想如何编写它? - Benoît
6个回答

14
在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
}

8
针对您的情况,您可以尝试类似以下的方法:
if (new string[] { string1, string2, string3, string4 }.Contains("someotherstring"))
{
}

对于“and”操作:strings.All(x => x=="someotherstring") - Rob Fonseca-Ensor
3
细节说明:在 C# 3.0 中,你可以通过省略数组类型(类型将被推断)来进一步缩短语法。例如:if (new[] { s1, s2, s3, s4 }.Contains("s")) - Romain Verdier
2
这会导致编译错误:“无法在此处访问私有方法'Contains'”。 - Imran Rizvi

4
我认为LINQ非常具有表现力,考虑在这个问题中使用它:
new[] { string1, string2, string3, string4 }.Any(s => s == "some string")

3
没有现成的C#方法可以实现,但你可以按照以下方式编写代码:
 (string1 == string2 && string2 == string3 && 
  string3 == string4 && string4 == "someotherstring")

嗨,詹姆斯.. 感谢您的回复.. 如果您再看一下我的问题..我已经使用了||。这意味着,string1、string2、string3和string4中的任何一个都应该等于“someotherstring”...我认为..如果我想检查这4个字符串实例是否都等于“someotherstring”,那么您的情况将适用吗? 我是对的吗?问候, 帕雷什·拉托德 KlixMedia - Paresh Rathod

1
你可以创建一个函数来简化代码的阅读:
compareToFirst( "someotherthing", string1, string2, string3, string4);

如果您想将此字符串列表与连续的“其他字符串”进行比较,您可能需要创建一个名为“myStringList”的列表对象,在其中添加string1/2/3/4,然后定义一个函数以便能够编写。
compare( "someotherthing", myStringList );

0
我并不相信。你怎么会知道哪个没有进行比较或者匹配呢?没有办法评估这样比较的副作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接