This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
generic <typename T>
static bool Exists(cli::array <T> ^ array, Predicate<T> ^ match);
public static bool Exists<T> (T[] array, Predicate<T> match);
static member Exists : 'T[] * Predicate<'T> -> bool
Public Shared Function Exists(Of T) (array As T(), match As Predicate(Of T)) As Boolean
Type Parameters
Examples
The following example specifies the match conditions for the
Exists
method using lambda expressions to check whether a planet starts with a given letter or whether the planet is found on the given array.
using System;
namespace Example
class Program
static void Main(string[] args)
string[] planets = { "Mercury", "Venus",
"Earth", "Mars", "Jupiter",
"Saturn", "Uranus", "Neptune" };
Console.WriteLine("One or more planets begin with 'M': {0}",
Array.Exists(planets, element => element.StartsWith("M")));
Console.WriteLine("One or more planets begin with 'T': {0}",
Array.Exists(planets, element => element.StartsWith("T")));
Console.WriteLine("Is Pluto one of the planets? {0}",
Array.Exists(planets, element => element == "Pluto"));
// The example displays the following output:
// One or more planets begin with 'M': True
// One or more planets begin with 'T': False
// Is Pluto one of the planets? False
open System
let planets =
[| "Mercury"; "Venus"
"Earth"; "Mars"; "Jupiter"
"Saturn"; "Uranus"; "Neptune" |]
Array.Exists(planets, fun element -> element.StartsWith "M")
|> printfn "One or more planets begin with 'M': %O"
Array.Exists(planets, fun element -> element.StartsWith "T")
|> printfn "One or more planets begin with 'T': %O"
Array.Exists(planets, fun element -> element = "Pluto")
|> printfn "Is Pluto one of the planets? %O"
// The example displays the following output:
// One or more planets begin with 'M': True
// One or more planets begin with 'T': False
// Is Pluto one of the planets? False
Module Example
Public Sub Main()
Dim planets() As String = {"Mercury", "Venus",
"Earth", "Mars", "Jupiter",
"Saturn", "Uranus", "Neptune"}
Console.WriteLine("One or more planets begin with 'M': {0}",
Array.Exists(planets, Function(element)
Return element.StartsWith("M")
End Function))
Console.WriteLine("One or more planets begin with 'T': {0}",
Array.Exists(planets, Function(element)
Return element.StartsWith("T")
End Function))
Console.WriteLine("Is Pluto one of the planets? {0}",
Array.Exists(planets, Function(element)
Return element.Equals("Pluto")
End Function))
End Sub
End Module
' The example displays the following output:
' One or more planets begin with 'M': True
' One or more planets begin with 'T': False
' Is Pluto one of the planets? False
The following example uses the
Exists
method to indicate whether any names in a string array begin with a specified character. The example instantiates a
StringSearcher
object by passing the string to search for to its class constructor. The
StringSearcher.StartsWith
method has same signature as the
Predicate<T>
delegate. When the
Exists
method is called, each member of the array is passed to the delegate until it returns
true
or iterates all the elements in the array.
using System;
public class Example
public static void Main()
String[] names = { "Adam", "Adel", "Bridgette", "Carla",
"Charles", "Daniel", "Elaine", "Frances",
"George", "Gillian", "Henry", "Irving",
"James", "Janae", "Lawrence", "Miguel",
"Nicole", "Oliver", "Paula", "Robert",
"Stephen", "Thomas", "Vanessa",
"Veronica", "Wilberforce" };
Char[] charsToFind = { 'A', 'K', 'W', 'Z' };
foreach (var charToFind in charsToFind)
Console.WriteLine("One or more names begin with '{0}': {1}",
charToFind,
Array.Exists(names, (new StringSearcher(charToFind)).StartsWith));
public class StringSearcher
char firstChar;
public StringSearcher(char firstChar)
this.firstChar = char.ToUpper(firstChar);
public bool StartsWith(string s)
if (string.IsNullOrEmpty(s)) return false;
if(s.Substring(0, 1).ToUpper() == firstChar.ToString())
return true;
return false;
// The example displays the following output:
// One or more names begin with 'A': True
// One or more names begin with 'K': False
// One or more names begin with 'W': True
// One or more names begin with 'Z': False
open System
type StringSearcher(firstChar) =
member _.StartsWith(s) =
if String.IsNullOrEmpty s then
false
s.Substring(0, 1).ToUpper() = string firstChar
let names =
[| "Adam"; "Adel"; "Bridgette"; "Carla";
"Charles"; "Daniel"; "Elaine"; "Frances"
"George"; "Gillian"; "Henry"; "Irving"
"James"; "Janae"; "Lawrence"; "Miguel"
"Nicole"; "Oliver"; "Paula"; "Robert"
"Stephen"; "Thomas"; "Vanessa"
"Veronica"; "Wilberforce" |]
let charsToFind = [ 'A'; 'K'; 'W'; 'Z' ]
for char in charsToFind do
let exists = Array.Exists(names, fun x -> StringSearcher(char).StartsWith x)
// let exists = Array.exists (StringSearcher(char).StartsWith) names
printfn $"One or more names begin with '{char}': {exists}"
// The example displays the following output:
// One or more names begin with 'A': True
// One or more names begin with 'K': False
// One or more names begin with 'W': True
// One or more names begin with 'Z': False
Module Example
Public Sub Main()
Dim names() As String = { "Adam", "Adel", "Bridgette", "Carla",
"Charles", "Daniel", "Elaine", "Frances",
"George", "Gillian", "Henry", "Irving",
"James", "Janae", "Lawrence", "Miguel",
"Nicole", "Oliver", "Paula", "Robert",
"Stephen", "Thomas", "Vanessa",
"Veronica", "Wilberforce" }
Dim charsToFind() As Char = { "A"c, "K"c, "W"c, "Z"c }
For Each charToFind In charsToFind
Console.WriteLine("One or more names begin with '{0}': {1}",
charToFind,
Array.Exists(names, AddressOf (New StringSearcher(charToFind)).StartsWith))
End Sub
End Module
Public Class StringSearcher
Dim firstChar As Char
Public Sub New(firstChar As Char)
Me.firstChar = Char.ToUpper(firstChar)
End Sub
Public Function StartsWith(s As String) As Boolean
If String.IsNullOrEmpty(s) Then Return False
If s.Substring(0, 1).ToUpper = firstChar Then
Return True
Return False
End If
End Function
End Class
' The example displays the following output:
' One or more names begin with 'A': True
' One or more names begin with 'K': False
' One or more names begin with 'W': True
' One or more names begin with 'Z': False
You can also use a lambda expression rather than explicitly define a method whose signature corresponds to that of the delegate. The following example replaces the
StringSearcher
class and its
StartsWith
method with a lambda expression.
using System;
public class Example
public static void Main()
String[] names = { "Adam", "Adel", "Bridgette", "Carla",
"Charles", "Daniel", "Elaine", "Frances",
"George", "Gillian", "Henry", "Irving",
"James", "Janae", "Lawrence", "Miguel",
"Nicole", "Oliver", "Paula", "Robert",
"Stephen", "Thomas", "Vanessa",
"Veronica", "Wilberforce" };
Char[] charsToFind = { 'A', 'K', 'W', 'Z' };
foreach (var charToFind in charsToFind)
Console.WriteLine("One or more names begin with '{0}': {1}",
charToFind,
Array.Exists(names,
s => { if (string.IsNullOrEmpty(s))
return false;
if (s.Substring(0, 1).ToUpper() == charToFind.ToString())
return true;
return false;
} ));
// The example displays the following output:
// One or more names begin with 'A': True
// One or more names begin with 'K': False
// One or more names begin with 'W': True
// One or more names begin with 'Z': False
open System
let names =
[| "Adam"; "Adel"; "Bridgette"; "Carla";
"Charles"; "Daniel"; "Elaine"; "Frances"
"George"; "Gillian"; "Henry"; "Irving"
"James"; "Janae"; "Lawrence"; "Miguel"
"Nicole"; "Oliver"; "Paula"; "Robert"
"Stephen"; "Thomas"; "Vanessa"
"Veronica"; "Wilberforce" |]
let charsToFind = [ 'A'; 'K'; 'W'; 'Z' ]
for char in charsToFind do
let exists =
Array.Exists(names, fun s ->
if String.IsNullOrEmpty s then false
else s.Substring(0, 1).ToUpper() = string char)
printfn $"One or more names begin with '{char}': {exists}"
// The example displays the following output:
// One or more names begin with 'A': True
// One or more names begin with 'K': False
// One or more names begin with 'W': True
// One or more names begin with 'Z': False
Module Example
Public Sub Main()
Dim names() As String = { "Adam", "Adel", "Bridgette", "Carla",
"Charles", "Daniel", "Elaine", "Frances",
"George", "Gillian", "Henry", "Irving",
"James", "Janae", "Lawrence", "Miguel",
"Nicole", "Oliver", "Paula", "Robert",
"Stephen", "Thomas", "Vanessa",
"Veronica", "Wilberforce" }
Dim charsToFind() As Char = { "A"c, "K"c, "W"c, "Z"c }
For Each charToFind In charsToFind
Console.WriteLine("One or more names begin with '{0}': {1}",
charToFind,
Array.Exists(names, Function(s)
If String.IsNullOrEmpty(s) Then Return False
If s.Substring(0, 1).ToUpper = charToFind Then
Return True
Return False
End If
End Function ))
End Sub
End Module
' The example displays the following output:
' One or more names begin with 'A': True
' One or more names begin with 'K': False
' One or more names begin with 'W': True
' One or more names begin with 'Z': False
Remarks
The
Predicate<T>
is a delegate to a method that returns
true
if the object passed to it matches the conditions defined in the delegate. The elements of
array
are individually passed to the
Predicate<T>
, and processing is stopped when a match is found.
In C# and Visual Basic, it is not necessary to create the
Predicate<T>
delegate explicitly. These languages infer the correct delegate from context and create it automatically. In F#, functions and lambda expressions are implicitly converted.
This method is an O(
n
) operation, where
n
is the
Length
of
array
.