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

问题描述 投票:0回答:6

如果我想为多个对象分配相同的值,我会使用这样的方法:

string1 = string2 = string3 = string 4 = "some string";

我想将 string1、string2、string3 和 string4 与“someotherstring”进行比较。有没有什么方法可以做到这一点而不需要编写单独的比较?

string1 == "someotherstring" || string2 == "someotherstring" || string3 == "someotherstring" || string4 == "someotherstring"
c# string
6个回答
15
投票

在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"))
{
}

5
投票

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

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

3
投票

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

 (string1 == string2 && string2 == string3 && 
  string3 == string4 && string4 == "someotherstring")

1
投票

您可以创建一个函数来简化代码的阅读:

compareToFirst( "someotherthing", string1, string2, string3, string4);

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

compare( "someotherthing", myStringList );

0
投票

我不这么认为。您怎么知道哪一个没有比较或匹配。无法评估这种比较的副作用。

© www.soinside.com 2019 - 2024. All rights reserved.