Вот подход, совместимый с .NET 2.0. Использование Array.Find
вернет ноль, если значение не найдено.
C # Подход
string[] myStrings = { "A", "B", "testValue" };
string test = "testValue";
string result = Array.Find(myStrings, delegate(string s) { return s == test; });
Console.WriteLine("Result: " + result);
Если вам нужно совпадение без учета регистра, используйте s.Equals(test, StringComparison.InvariantCultureIgnoreCase)
.
РЕДАКТИРОВАТЬ: с VB.NET 2.0 требуется больше усилий, поскольку он не поддерживает анонимных делегатов. Вместо этого вам нужно будет добавить Function
и использовать AddressOf
, чтобы указать на него. Вам необходимо установить testValue
в качестве члена или свойства, поскольку он не будет передан в метод предиката. В следующем примере я использую Array.Exists
.
Подход VB.NET
' field or property '
Dim test As String = "testValue"
Sub Main
Dim myStrings As String() = { "A", "B", "testValue" }
Dim result As Boolean = Array.Exists(myStrings, AddressOf ContainsValue)
Console.WriteLine(result)
End Sub
' Predicate method '
Private Function ContainsValue(s As String) As Boolean
Return s = test
End Function