2009-12-26 88 views
4

请看看下面的情况下,肯定会很有趣..C#多个字符串比较具有相同值

,如果我想分配相同的值,多​​个对象我会用这样的

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

现在我想要做的是,我想比较string1,string2,string3和string4与“someotherstring”...问题是有没有办法做到这一点,而不写个人比较。

string1 == "someotherstring" || string2 == "someotherstring" || string3 == "someotherstring" || string4 == "someotherstring" 

希望我能解释的问题..请提供我在此帮助。

问候, 帕雷什Rathod

+0

你想怎么写? – 2009-12-26 07:19:34

回答

3

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

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

嗨,詹姆斯.. 感谢您的回复.. 如果您将再次看看我的问题..我已经使用||。意思是,任何string1,string2,string3和string4应该等于“someothertring”... 我认为..你的情况将适用,如果我想检查,是否所有4个字符串实例等于“someotherstring”或不? 对吗? Regards, Paresh Rathod KlixMedia – 2009-12-26 07:56:47

+0

你说得对,我误读了。见下面的表演者。 – 2009-12-26 16:19:33

0

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

8

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

if (new string[] { string1, string2, string3, string4 }.Contains("someotherstring")) 
{ 
} 
+0

非常棘手。 ;-) – 2009-12-26 07:23:04

+0

和“和”操作:strings.All(x => x ==“someotherstring”) – 2009-12-26 07:28:44

+3

小细节:在C#3.0中,可以通过省略数组类型来缩短语法它会被推断出来)。即:if(new [] {s1,s2,s3,s4}。包含(“s”))' – 2009-12-26 10:48:18

1

您可以创建,简化读码功能:

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

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

compare("someotherthing", myStringList); 
13

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

我发现LINQ非常富有表现力,并会考虑使用它对于这个问题:

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