Struct Optional<T>
A container object which may or may not contain a value.
Namespace: DotNext
Assembly: DotNext.dll
Syntax
public struct Optional<T> : IEquatable<Optional<T>>, IEquatable<T>, IStructuralEquatable, ISerializable
Type Parameters
Name | Description |
---|---|
T | Type of value. |
Constructors
| Improve this Doc View SourceOptional(T)
Constructs non-empty container.
Declaration
public Optional(T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | A value to be placed into container. |
Properties
| Improve this Doc View SourceEmpty
Represents optional container without value.
Declaration
public static Optional<T> Empty { get; }
Property Value
Type | Description |
---|---|
Optional<T> |
IsPresent
Indicates whether the value is present.
Declaration
public bool IsPresent { get; }
Property Value
Type | Description |
---|---|
Boolean |
Value
If a value is present, returns the value, otherwise throw exception.
Declaration
public T Value { get; }
Property Value
Type | Description |
---|---|
T |
Methods
| Improve this Doc View SourceConvert<U>(Converter<T, U>)
If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result. Otherwise returns Empty.
Declaration
public Optional<U> Convert<U>(Converter<T, U> mapper)
Parameters
Type | Name | Description |
---|---|---|
DotNext.Converter<T, U> | mapper | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Optional<U> | An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise Empty. |
Type Parameters
Name | Description |
---|---|
U | The type of the result of the mapping function. |
Convert<U>(Converter<T, Optional<U>>)
If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result. Otherwise returns Empty.
Declaration
public Optional<U> Convert<U>(Converter<T, Optional<U>> mapper)
Parameters
Type | Name | Description |
---|---|---|
DotNext.Converter<T, Optional<U>> | mapper | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Optional<U> | An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise Empty. |
Type Parameters
Name | Description |
---|---|
U | The type of the result of the mapping function. |
Convert<U>(ValueFunc<T, U>)
If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result. Otherwise returns Empty.
Declaration
public Optional<U> Convert<U>(in ValueFunc<T, U> mapper)
Parameters
Type | Name | Description |
---|---|---|
ValueFunc<T, U> | mapper | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Optional<U> | An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise Empty. |
Type Parameters
Name | Description |
---|---|
U | The type of the result of the mapping function. |
Convert<U>(ValueFunc<T, Optional<U>>)
If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result. Otherwise returns Empty.
Declaration
public Optional<U> Convert<U>(in ValueFunc<T, Optional<U>> mapper)
Parameters
Type | Name | Description |
---|---|---|
ValueFunc<T, Optional<U>> | mapper | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Optional<U> | An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise Empty. |
Type Parameters
Name | Description |
---|---|
U | The type of the result of the mapping function. |
Equals(T)
Determines whether this container stored the same value as the specified value.
Declaration
public bool Equals(T other)
Parameters
Type | Name | Description |
---|---|---|
T | other | Other value to compare. |
Returns
Type | Description |
---|---|
Boolean | true if Value is equal to |
Equals(Optional<T>)
Determines whether this container stores the same value as other.
Declaration
public bool Equals(Optional<T> other)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | other | Other container to compare. |
Returns
Type | Description |
---|---|
Boolean | true if this container stores the same value as |
Equals(Object)
Determines whether this container stores the same value as other.
Declaration
public override bool Equals(object other)
Parameters
Type | Name | Description |
---|---|---|
Object | other | Other container to compare. |
Returns
Type | Description |
---|---|
Boolean | true if this container stores the same value as |
Equals(Object, IEqualityComparer)
Performs equality check between stored value
and the specified value using method
Declaration
public bool Equals(object other, IEqualityComparer comparer)
Parameters
Type | Name | Description |
---|---|---|
Object | other | Other object to compare with Value. |
IEqualityComparer | comparer | The comparer implementing custom equality check. |
Returns
Type | Description |
---|---|
Boolean | true if |
GetHashCode()
Computes hash code of the stored value.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
Int32 | The hash code of the stored value. |
Remarks
This method calls
GetHashCode(IEqualityComparer)
Computes hash code for the stored value
using method
Declaration
public int GetHashCode(IEqualityComparer comparer)
Parameters
Type | Name | Description |
---|---|---|
IEqualityComparer | comparer | The comparer implementing hash code function. |
Returns
Type | Description |
---|---|
Int32 | The hash code of Value. |
If(Predicate<T>)
If a value is present, and the value matches the given predicate, return an Optional describing the value, otherwise return an empty Optional.
Declaration
public Optional<T> If(Predicate<T> condition)
Parameters
Type | Name | Description |
---|---|---|
DotNext.Predicate<T> | condition | A predicate to apply to the value, if present. |
Returns
Type | Description |
---|---|
Optional<T> | An Optional describing the value of this Optional if a value is present and the value matches the given predicate, otherwise an empty Optional |
If(ValueFunc<T, Boolean>)
If a value is present, and the value matches the given predicate, return an Optional describing the value, otherwise return an empty Optional.
Declaration
public Optional<T> If(in ValueFunc<T, bool> condition)
Parameters
Type | Name | Description |
---|---|---|
ValueFunc<T, Boolean> | condition | A predicate to apply to the value, if present. |
Returns
Type | Description |
---|---|
Optional<T> | An Optional describing the value of this Optional if a value is present and the value matches the given predicate, otherwise an empty Optional |
Or(T)
Returns the value if present; otherwise return default value.
Declaration
public T Or(T defaultValue)
Parameters
Type | Name | Description |
---|---|---|
T | defaultValue | The value to be returned if there is no value present. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise |
OrDefault()
If a value is present, returns the value, otherwise return default value.
Declaration
public T OrDefault()
Returns
Type | Description |
---|---|
T | The value, if present, otherwise default |
OrInvoke(Func<T>)
Returns the value if present; otherwise invoke delegate.
Declaration
public T OrInvoke(Func<T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
DotNext.Func<T> | defaultFunc | A delegate to be invoked if value is not present. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise returned from delegate. |
OrInvoke(ValueFunc<T>)
Returns the value if present; otherwise invoke delegate.
Declaration
public T OrInvoke(in ValueFunc<T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
ValueFunc<T> | defaultFunc | A delegate to be invoked if value is not present. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise returned from delegate. |
OrThrow<E>()
If a value is present, returns the value, otherwise throw exception.
Declaration
public T OrThrow<E>()
where E : Exception, new()
Returns
Type | Description |
---|---|
T | The value, if present. |
Type Parameters
Name | Description |
---|---|
E | Type of exception to throw. |
OrThrow<E>(Func<E>)
If a value is present, returns the value, otherwise throw exception.
Declaration
public T OrThrow<E>(Func<E> exceptionFactory)
where E : Exception
Parameters
Type | Name | Description |
---|---|---|
DotNext.Func<E> | exceptionFactory | Exception factory. |
Returns
Type | Description |
---|---|
T | The value, if present. |
Type Parameters
Name | Description |
---|---|
E |
OrThrow<E>(ValueFunc<E>)
If a value is present, returns the value, otherwise throw exception.
Declaration
public T OrThrow<E>(in ValueFunc<E> exceptionFactory)
where E : Exception
Parameters
Type | Name | Description |
---|---|---|
ValueFunc<E> | exceptionFactory | Exception factory. |
Returns
Type | Description |
---|---|
T | The value, if present. |
Type Parameters
Name | Description |
---|---|
E |
ToString()
Returns textual representation of this object.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
String | The textual representation of this object. |
TryGet(out T)
Attempts to extract value from container if it is present.
Declaration
public bool TryGet(out T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | Extracted value. |
Returns
Type | Description |
---|---|
Boolean | true if value is present; otherwise, false. |
Operators
| Improve this Doc View SourceBitwiseOr(Optional<T>, Optional<T>)
Returns non-empty container.
Declaration
public static Optional<T> operator |(in Optional<T> first, in Optional<T> second)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | first | The first container. |
Optional<T> | second | The second container. |
Returns
Type | Description |
---|---|
Optional<T> | The first non-empty container. |
See Also
Equality(Optional<T>, Optional<T>)
Determines whether two containers store the same value.
Declaration
public static bool operator ==(in Optional<T> first, in Optional<T> second)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | first | The first container to compare. |
Optional<T> | second | The second container to compare. |
Returns
Type | Description |
---|---|
Boolean | true, if both containers store the same value; otherwise, false. |
ExclusiveOr(Optional<T>, Optional<T>)
Determines whether two containers are empty or have values.
Declaration
public static Optional<T> operator ^(in Optional<T> first, in Optional<T> second)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | first | The first container. |
Optional<T> | second | The second container. |
Returns
Type | Description |
---|---|
Optional<T> | true, if both containers are empty or have values; otherwise, false. |
Explicit(Optional<T> to T)
Extracts value stored in the Optional container.
Declaration
public static explicit operator T(in Optional<T> optional)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | optional | The container. |
Returns
Type | Description |
---|---|
T |
False(Optional<T>)
Checks whether the container has no value.
Declaration
public static bool operator false (in Optional<T> optional)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | optional | The container to check. |
Returns
Type | Description |
---|---|
Boolean | true if this container has no value; otherwise, false. |
Implicit(T to Optional<T>)
Wraps value into Optional container.
Declaration
public static implicit operator Optional<T>(T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | The value to convert. |
Returns
Type | Description |
---|---|
Optional<T> |
Inequality(Optional<T>, Optional<T>)
Determines whether two containers store the different values.
Declaration
public static bool operator !=(in Optional<T> first, in Optional<T> second)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | first | The first container to compare. |
Optional<T> | second | The second container to compare. |
Returns
Type | Description |
---|---|
Boolean | true, if both containers store the different values; otherwise, false. |
True(Optional<T>)
Checks whether the container has value.
Declaration
public static bool operator true (in Optional<T> optional)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | optional | The container to check. |
Returns
Type | Description |
---|---|
Boolean | true if this container has value; otherwise, false. |