Contract.ForAll Method (Int32, Int32, Predicate<Int32>)
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Determines whether a particular condition is valid for all integers in a specified range.
Namespace: System.Diagnostics.Contracts
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Function ForAll ( _
fromInclusive As Integer, _
toExclusive As Integer, _
predicate As Predicate(Of Integer) _
) As Boolean
public static bool ForAll(
int fromInclusive,
int toExclusive,
Predicate<int> predicate
)
Parameters
- fromInclusive
Type: System.Int32
The first integer to pass to predicate.
- toExclusive
Type: System.Int32
One more than the last integer to pass to predicate.
- predicate
Type: System.Predicate<Int32>
The function to evaluate for the existence of the integers in the specified range.
Return Value
Type: System.Boolean
true if predicate returns true for all integers starting from fromInclusive to toExclusive - 1.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | predicate is nulla null reference (Nothing in Visual Basic). |
ArgumentException | toExclusive is less than fromInclusive. |
Remarks
The toExclusive parameter is one more than the last integer to facilitate using the length of a range of integers starting at 0. For example, it would be set to 5 for integers 0 through 4.
Examples
The following example demonstrates how to use the ForAll method to determine whether an array has a null element.
Imports System
Imports System.Diagnostics.Contracts
Imports System.Collections.Generic
Class Program
' Start application with at least two arguments.
Shared Sub Main(ByVal args() As String)
args(1) = Nothing
Contract.Requires(Not (args Is Nothing) AndAlso Contract.ForAll(args, Function(s) s Is Nothing))
' test the ForAll method. This is only for purpose of demonstrating how ForAll works.
CheckIndexes(args)
Dim numbers As New Stack(Of String)
numbers.Push("one")
numbers.Push("two")
numbers.Push("three")
numbers.Push("four")
numbers.Push("five")
Contract.Requires(Not (numbers Is Nothing) AndAlso Not Contract.ForAll(numbers, Function(s) s Is Nothing))
' test the ForAll generic overload. This is only for purpose of demonstrating how ForAll works.
CheckTypeArray(numbers)
End Sub 'Main
Private Shared Function CheckIndexes(ByVal args() As String) As Boolean
Try
If Not (args Is Nothing) AndAlso Not Contract.ForAll(0, args.Length, Function(i) args(i) Is Nothing) Then
Throw New ArgumentException("The parameter array has a null element", "args")
End If
Return True
Catch e As ArgumentException
Console.WriteLine(e.Message)
Return False
End Try
End Function 'CheckIndexes
Private Shared Function CheckTypeArray(ByVal xs As Stack(Of String)) As Boolean
Try
If Not (xs Is Nothing) AndAlso Not Contract.ForAll(xs, Function(s) s Is Nothing) Then
Throw New ArgumentException("The parameter array has a null element", "Stack")
End If
Return True
Catch e As ArgumentException
Console.WriteLine(e.Message)
Return False
End Try
End Function 'CheckTypeArray
End Class 'Program
using System;
using System.Diagnostics.Contracts;
using System.Collections.Generic;
namespace AssumeEx
{
class Program
{
// Start application with at least two arguments
static void Main(string[] args)
{
args[1] = null;
Contract.Requires(args != null && Contract.ForAll(0, args.Length, i => args[i] != null));
// test the ForAll method. This is only for purpose of demonstrating how ForAll works.
CheckIndexes(args);
Stack<string> numbers = new Stack<string>();
numbers.Push("one");
numbers.Push("two");
numbers.Push(null);
numbers.Push("four");
numbers.Push("five");
Contract.Requires(numbers != null && !Contract.ForAll(numbers, (String x) => x != null));
// test the ForAll generic overload. This is only for purpose of demonstrating how ForAll works.
CheckTypeArray(numbers);
}
private static bool CheckIndexes(string[] args)
{
try
{
if (args != null && !Contract.ForAll(0, args.Length, i => args[i] != null))
throw new ArgumentException("The parameter array has a null element", "args");
return true;
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
return false;
}
}
private static bool CheckTypeArray(IEnumerable<String> xs)
{
try
{
if (xs != null && !Contract.ForAll(xs, (String x) => x != null))
throw new ArgumentException("The parameter array has a null element", "indexes");
return true;
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
return false;
}
}
}
}
Version Information
Silverlight
Supported in: 5, 4
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.