Show / Hide Table of Contents

Interface IOpt<T>

Generic type for options.

Inherited Members
IOpt.ResolveUntypedOption<TResult>(Func<Boolean, Object, TResult>)
IEnumerable<T>.GetEnumerator()
Namespace: Hgk.Zero.Options
Assembly: Hgk.Zero.Options.dll
Syntax
public interface IOpt<out T> : IOpt, IEnumerable<T>, IEnumerable
Type Parameters
Name Description
T

The type of value that may be contained in this option.

Remarks

IOpt<T> implements IEnumerable and IEnumerable<T>. The contract of this interface requires that the enumerators returned from GetEnumerator() and GetEnumerator() produce either zero values, if the option is empty, or one value, if the option is full. Behavior is undefined if the enumerable produces more than one value.

In general, this interface should not be directly implemented in an application. Instead:

  • If the contained value is known immediately, use the fixed option type Opt<T>. An instance can be created using static methods of Opt including Create<T>(T), Full<T>(T), and Empty<T>().
  • If the contained value is not yet determined and should be deferred, use Defer<T>(Func<Opt<T>>) to create a deferred option based on a function that returns a fixed option.
  • If the contained value is the first element, last element, an element at a particular index, or the only element of an IEnumerable<T>, use WhereFirst<TSource>(IEnumerable<TSource>), WhereLast<TSource>(IEnumerable<TSource>), WhereElementAt<TSource>(IEnumerable<TSource>, Int32), or WhereSingle<TSource>(IEnumerable<TSource>), respectively, to obtain a deferred option containing the indicated element.

Methods

| Improve this Doc View Source

ResolveOption<TResult>(Func<Boolean, T, TResult>)

Resolves the contents of this option, producing a result using the specified result selector function.

Declaration
TResult ResolveOption<TResult>(Func<bool, T, TResult> resultSelector)
Parameters
Type Name Description
Func<Boolean, T, TResult> resultSelector

A transform function that accepts a has-value flag and a value.

Returns
Type Description
TResult

The result of calling resultSelector on the current resolved state of this option.

Type Parameters
Name Description
TResult

The return type of resultSelector.

Remarks

The resolver function accepts two parameters: A has-value flag and a value. (These values roughly correspond to Any<TSource>(IOpt<TSource>) and SingleOrDefault<TSource>(IOpt<TSource>), respectively.)

  • If this option contains a value, the has-value flag is true and the value parameter is the contained value.
  • If this option is empty, the has-value flag is false and the value parameter is undefined. (The caller must not use the value of the value parameter. In order to prevent accidental misbehavior, the implementation should supply langword_csharp_default( T), but this is not required.)
Exceptions
Type Condition
ArgumentNullException

resultSelector is null.

Extension Methods

EnumerableToString.ConcatToString<T>(IEnumerable<T>)
EnumerableToString.JoinToString<T>(IEnumerable<T>, String)
EnumerableToOpt.WhereElementAt<TSource>(IEnumerable<TSource>, Int32)
EnumerableToOpt.WhereFirst<TSource>(IEnumerable<TSource>)
EnumerableToOpt.WhereFirst<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)
EnumerableToOpt.WhereLast<TSource>(IEnumerable<TSource>)
EnumerableToOpt.WhereLast<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)
EnumerableToOpt.WhereSingle<TSource>(IEnumerable<TSource>)
EnumerableToOpt.WhereSingle<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)
LinqToOpt.AsIOpt<TSource>(IOpt<TSource>)
LinqToOpt.Contains<TSource>(IOpt<TSource>, TSource)
LinqToOpt.Contains<TSource>(IOpt<TSource>, TSource, IEqualityComparer<TSource>)
LinqToOpt.Distinct<TSource>(IOpt<TSource>)
LinqToOpt.Distinct<TSource>(IOpt<TSource>, IEqualityComparer<TSource>)
LinqToOpt.Reverse<TSource>(IOpt<TSource>)
LinqToOpt.ToArray<TSource>(IOpt<TSource>)
LinqToOpt.ToFixed<TSource>(IOpt<TSource>)
LinqToOpt.ToFixed(IOpt)
LinqToOpt.ToList<TSource>(IOpt<TSource>)
LinqToOpt.TryGetValue<TSource>(IOpt<TSource>, out TSource)
LinqToOpt.Aggregate<TSource>(IOpt<TSource>, Func<TSource, TSource, TSource>)
LinqToOpt.Aggregate<TSource, TAccumulate>(IOpt<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>)
LinqToOpt.Aggregate<TSource, TAccumulate, TResult>(IOpt<TSource>, TAccumulate, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TResult>)
LinqToOpt.All<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.Any<TSource>(IOpt<TSource>)
LinqToOpt.Any<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.Count<TSource>(IOpt<TSource>)
LinqToOpt.Count<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.LongCount<TSource>(IOpt<TSource>)
LinqToOpt.LongCount<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Int32>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int32>>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Int64>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int64>>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Single>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Nullable<Single>>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Double>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Nullable<Double>>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Decimal>)
LinqToOpt.Average<TSource>(IOpt<TSource>, Func<TSource, Nullable<Decimal>>)
LinqToOpt.Cast<TResult>(IOpt)
LinqToOpt.OfType<TResult>(IOpt)
LinqToOpt.Except<TSource>(IOpt<TSource>, IEnumerable<TSource>)
LinqToOpt.Except<TSource>(IOpt<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)
LinqToOpt.Intersect<TSource>(IOpt<TSource>, IEnumerable<TSource>)
LinqToOpt.Intersect<TSource>(IOpt<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)
LinqToOpt.GroupBy<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>)
LinqToOpt.GroupBy<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>)
LinqToOpt.GroupBy<TSource, TKey, TElement>(IOpt<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)
LinqToOpt.GroupBy<TSource, TKey, TElement>(IOpt<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, IEqualityComparer<TKey>)
LinqToOpt.GroupBy<TSource, TKey, TResult>(IOpt<TSource>, Func<TSource, TKey>, Func<TKey, IOpt<TSource>, TResult>)
LinqToOpt.GroupBy<TSource, TKey, TResult>(IOpt<TSource>, Func<TSource, TKey>, Func<TKey, IOpt<TSource>, TResult>, IEqualityComparer<TKey>)
LinqToOpt.GroupBy<TSource, TKey, TElement, TResult>(IOpt<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IOpt<TElement>, TResult>)
LinqToOpt.GroupBy<TSource, TKey, TElement, TResult>(IOpt<TSource>, Func<TSource, TKey>, Func<TSource, TElement>, Func<TKey, IOpt<TElement>, TResult>, IEqualityComparer<TKey>)
LinqToOpt.GroupJoin<TOuter, TInner, TKey, TResult>(IOpt<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, IEnumerable<TInner>, TResult>)
LinqToOpt.GroupJoin<TOuter, TInner, TKey, TResult>(IOpt<TOuter>, IEnumerable<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, IEnumerable<TInner>, TResult>, IEqualityComparer<TKey>)
LinqToOpt.GroupJoin<TOuter, TInner, TKey, TResult>(IOpt<TOuter>, IOpt<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, IOpt<TInner>, TResult>)
LinqToOpt.GroupJoin<TOuter, TInner, TKey, TResult>(IOpt<TOuter>, IOpt<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, IOpt<TInner>, TResult>, IEqualityComparer<TKey>)
LinqToOpt.DefaultIfEmpty<TSource>(IOpt<TSource>)
LinqToOpt.DefaultIfEmpty<TSource>(IOpt<TSource>, TSource)
LinqToOpt.ReplaceIfEmpty<TSource>(IOpt<TSource>, Func<IOpt<TSource>>)
LinqToOpt.ReplaceIfEmpty<TSource>(IOpt<TSource>, IOpt<TSource>)
LinqToOpt.Join<TOuter, TInner, TKey, TResult>(IOpt<TOuter>, IOpt<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>)
LinqToOpt.Join<TOuter, TInner, TKey, TResult>(IOpt<TOuter>, IOpt<TInner>, Func<TOuter, TKey>, Func<TInner, TKey>, Func<TOuter, TInner, TResult>, IEqualityComparer<TKey>)
LinqToOpt.Match<TSource, TResult>(IOpt<TSource>, Func<TResult>, Func<TSource, TResult>)
LinqToOpt.MatchOpt<TSource, TResult>(IOpt<TSource>, Func<Opt<TResult>>, Func<TSource, Opt<TResult>>)
LinqToOpt.Max<TSource>(IOpt<TSource>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Int32>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int32>>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Int64>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int64>>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Single>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Nullable<Single>>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Double>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Nullable<Double>>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Decimal>)
LinqToOpt.Max<TSource>(IOpt<TSource>, Func<TSource, Nullable<Decimal>>)
LinqToOpt.Max<TSource, TResult>(IOpt<TSource>, Func<TSource, TResult>)
LinqToOpt.Min<TSource>(IOpt<TSource>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Int32>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int32>>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Int64>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int64>>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Single>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Nullable<Single>>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Double>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Nullable<Double>>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Decimal>)
LinqToOpt.Min<TSource>(IOpt<TSource>, Func<TSource, Nullable<Decimal>>)
LinqToOpt.Min<TSource, TResult>(IOpt<TSource>, Func<TSource, TResult>)
LinqToOpt.OrderBy<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>)
LinqToOpt.OrderBy<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>, IComparer<TKey>)
LinqToOpt.OrderByDescending<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>)
LinqToOpt.OrderByDescending<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>, IComparer<TKey>)
LinqToOpt.ThenBy<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>)
LinqToOpt.ThenBy<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>, IComparer<TKey>)
LinqToOpt.ThenByDescending<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>)
LinqToOpt.ThenByDescending<TSource, TKey>(IOpt<TSource>, Func<TSource, TKey>, IComparer<TKey>)
LinqToOpt.Select<TSource, TResult>(IOpt<TSource>, Func<TSource, TResult>)
LinqToOpt.Select<TSource, TResult>(IOpt<TSource>, Func<TSource, Int32, TResult>)
LinqToOpt.SelectMany<TSource, TResult>(IOpt<TSource>, Func<TSource, IOpt<TResult>>)
LinqToOpt.SelectMany<TSource, TResult>(IOpt<TSource>, Func<TSource, Int32, IOpt<TResult>>)
LinqToOpt.SelectMany<TSource, TCollection, TResult>(IOpt<TSource>, Func<TSource, IOpt<TCollection>>, Func<TSource, TCollection, TResult>)
LinqToOpt.SelectMany<TSource, TCollection, TResult>(IOpt<TSource>, Func<TSource, Int32, IOpt<TCollection>>, Func<TSource, TCollection, TResult>)
LinqToOpt.SequenceEqual<TSource>(IOpt<TSource>, IEnumerable<TSource>)
LinqToOpt.SequenceEqual<TSource>(IOpt<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)
LinqToOpt.ElementAt<TSource>(IOpt<TSource>, Int32)
LinqToOpt.ElementAtOrDefault<TSource>(IOpt<TSource>, Int32)
LinqToOpt.ElementAtOrDefault<TSource>(IOpt<TSource>, Int32, TSource)
LinqToOpt.First<TSource>(IOpt<TSource>)
LinqToOpt.First<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.FirstOrDefault<TSource>(IOpt<TSource>)
LinqToOpt.FirstOrDefault<TSource>(IOpt<TSource>, TSource)
LinqToOpt.FirstOrDefault<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.FirstOrDefault<TSource>(IOpt<TSource>, Func<TSource, Boolean>, TSource)
LinqToOpt.Last<TSource>(IOpt<TSource>)
LinqToOpt.Last<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.LastOrDefault<TSource>(IOpt<TSource>)
LinqToOpt.LastOrDefault<TSource>(IOpt<TSource>, TSource)
LinqToOpt.LastOrDefault<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.LastOrDefault<TSource>(IOpt<TSource>, Func<TSource, Boolean>, TSource)
LinqToOpt.Single<TSource>(IOpt<TSource>)
LinqToOpt.Single<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.SingleOrDefault<TSource>(IOpt<TSource>)
LinqToOpt.SingleOrDefault<TSource>(IOpt<TSource>, TSource)
LinqToOpt.SingleOrDefault<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.SingleOrDefault<TSource>(IOpt<TSource>, Func<TSource, Boolean>, TSource)
LinqToOpt.Skip<TSource>(IOpt<TSource>, Int32)
LinqToOpt.SkipWhile<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.SkipWhile<TSource>(IOpt<TSource>, Func<TSource, Int32, Boolean>)
LinqToOpt.Take<TSource>(IOpt<TSource>, Int32)
LinqToOpt.TakeWhile<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.TakeWhile<TSource>(IOpt<TSource>, Func<TSource, Int32, Boolean>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Int32>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int32>>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Int64>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Nullable<Int64>>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Single>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Nullable<Single>>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Double>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Nullable<Double>>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Decimal>)
LinqToOpt.Sum<TSource>(IOpt<TSource>, Func<TSource, Nullable<Decimal>>)
LinqToOpt.Where<TSource>(IOpt<TSource>, Func<TSource, Boolean>)
LinqToOpt.Where<TSource>(IOpt<TSource>, Func<TSource, Int32, Boolean>)
LinqToOpt.WhereNotNull<TSource>(IOpt<TSource>)
LinqToOpt.Zip<TFirst, TSecond, TResult>(IOpt<TFirst>, IEnumerable<TSecond>, Func<TFirst, TSecond, TResult>)

See Also

IOpt
  • Improve this Doc
  • View Source
Back to top Copyright © 2018-2019 Peter S. May
Generated by DocFX