2012-09-14 87 views
0

我有一個Generic::List(String^)^ myList和一些std::string & myValue值,我需要檢查的值都包含在列表中。 (我不想將值添加到列表中)。比較System :: String^std :: string

我該怎麼做以取代myList->Contains(myValue)以確保我比較了字符串的內容?

我知道我可以使用InteropServices來封送列表中的每個元素。

我可以將通用::列表轉換爲cli ::數組,如果這將有所幫助!

感謝 梅拉妮

+0

比較具有不同編碼的字符串是有趣的事情。有時不同的角色應該比較相等。你知道你的列表是否會包含非ASCII字符? –

回答

0

List<T>::Contains(T)文檔(C#文檔,但是這並不影響什麼):

該方法通過使用默認的相等比較確定的平等,由對象的實現定義T的IEquatable.Equals方法(列表中值的類型)。

因爲String::Equals(String^)比較字符串的內容,所有必要的是將std::string轉換爲System::String^。你可以用marshal_as做到這一點,你應該很好。