2009-12-26 91 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")