C#具有相同值的多字符串比较

Par*_*hod 5 c# string

请看下面的情况,肯定会有趣..

如果我想为多个对象分配相同的值,我将使用这样的东西

string1 = string2 = string3 = string 4 = "some string";
Run Code Online (Sandbox Code Playgroud)

现在我想要做的是,我想比较string1,string2,string3和string4与"someotherstring"...问题是有没有办法做到这一点,而无需编写单独的比较.

string1 == "someotherstring" || string2 == "someotherstring" || string3 == "someotherstring" || string4 == "someotherstring"
Run Code Online (Sandbox Code Playgroud)

希望我能够解释这个问题..请向我提供帮助.

此致,Paresh Rathod

Rom*_*ier 14

在C#3.0中,您可以编写一个非常简单的扩展方法:

public static class StringExtensions
{
    public static bool In(this string @this, params string[] strings)
    {
        return strings.Contains(@this); 
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

if ("some string".In(string1, string2, string3, string4))
{
    // Do something
}
Run Code Online (Sandbox Code Playgroud)


Adr*_*der 8

对于您的情况,您可以尝试这样的事情

if (new string[] { string1, string2, string3, string4 }.Contains("someotherstring"))
{
}
Run Code Online (Sandbox Code Playgroud)

  • 次要细节:在C#3.0中,您可以通过省略数组的类型(它将被推断)来缩短语法.即:`if(new [] {s1,s2,s3,s4} .Contains("s"))` (3认同)
  • 这给编译错误"无法访问私有方法'包含'这里" (2认同)

Jay*_*uzi 5

我发现 LINQ 非常具有表现力,并且会考虑使用它来解决这个问题:

new[] { string1, string2, string3, string4 }.Any(s => s == "some string")
Run Code Online (Sandbox Code Playgroud)


Jam*_*sey 3

不,C# 中没有,但你可以这样写:

 (string1 == string2 && string2 == string3 && 
  string3 == string4 && string4 == "someotherstring")
Run Code Online (Sandbox Code Playgroud)