A container object which may or may not contain a value.
Namespace: DotNext Assembly: DotNext.dll Syntaxpublic readonly struct Optional<T> : IEquatable<Optional<T>>, IEquatable<T>, IStructuralEquatable, IOptionMonad<T, Optional<T>>, IOptionMonad<T>, ISupplier<object?>, IFunctional<Func<object?>>
Type Parameters Name Description T
Type of value.
Constructors | Edit this page View Source Optional(T?)Constructs non-empty container.
Declarationpublic Optional(T? value)
Parameters Type Name Description T value
A value to be placed into the container.
Properties | Edit this page View Source HasValueIndicates whether the value is present.
Declarationpublic bool HasValue { get; }
Property Value | Edit this page View Source IsNull
Indicates that the value is null.
Declarationpublic bool IsNull { get; }
Property Value | Edit this page View Source IsUndefined
Indicates that the value is undefined.
Declarationpublic bool IsUndefined { get; }
Property Value See Also | Edit this page View Source None
Represents optional container without value.
Declarationpublic static Optional<T> None { get; }
Property Value | Edit this page View Source Value
If a value is present, returns the value, otherwise throw exception.
Declaration Property Value Exceptions | Edit this page View Source ValueOrDefaultIf a value is present, returns the value, otherwise default value.
Declarationpublic T? ValueOrDefault { get; }
Property Value Type Description T
The value, if present, otherwise default.
| Edit this page View Source ValueRefGets an immutable reference to the value in the container.
Declaration[JsonIgnore]
public ref readonly T ValueRef { get; }
Property Value Exceptions Methods | Edit this page View Source Box()
Boxes value encapsulated by this object.
Declarationpublic Optional<object> Box()
Returns | Edit this page View Source Concat<TOther>(in Optional<TOther>)
Concatenates optional values.
Declarationpublic Optional<(T, TOther)> Concat<TOther>(in Optional<TOther> other)
Parameters Type Name Description Optional<TOther> other Returns Type Description Optional<(T, TOther)>
The optional value that is defined only when both containers have values.
Type Parameters | Edit this page View Source Convert<TResult>(delegate*<T, Optional<TResult>>)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 None.
Declaration[CLSCompliant(false)]
public Optional<TResult> Convert<TResult>(delegate*<T, Optional<TResult>> mapper)
Parameters Type Name Description delegate*<T, Optional<TResult>> mapper
A mapping function to be applied to the value, if present.
Returns Type Description Optional<TResult>An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise None.
Type Parameters Name Description TResultThe type of the result of the mapping function.
| Edit this page View Source Convert<TResult>(delegate*<T, Optional<TResult>>)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 None.
Declaration[CLSCompliant(false)]
public Optional<TResult> Convert<TResult>(delegate*<T, Optional<TResult>> mapper)
Parameters Type Name Description delegate*<T, Optional<TResult>> mapper
A mapping function to be applied to the value, if present.
Returns Type Description Optional<TResult>An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise None.
Type Parameters Name Description TResultThe type of the result of the mapping function.
| Edit this page View Source Convert<TResult>(Converter<T, Optional<TResult>>)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 None.
Declarationpublic Optional<TResult> Convert<TResult>(Converter<T, Optional<TResult>> mapper)
Parameters Type Name Description Converter<T, Optional<TResult>> mapper
A mapping function to be applied to the value, if present.
Returns Type Description Optional<TResult>An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise None.
Type Parameters Name Description TResultThe type of the result of the mapping function.
| Edit this page View Source Convert<TResult>(Converter<T, TResult>)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 None.
Declarationpublic Optional<TResult> Convert<TResult>(Converter<T, TResult> mapper)
Parameters Type Name Description Converter<T, TResult> mapper
A mapping function to be applied to the value, if present.
Returns Type Description Optional<TResult>An Optional describing the result of applying a mapping function to the value of this Optional, if a value is present, otherwise None.
Type Parameters Name Description TResultThe type of the mapping function result.
| Edit this page View Source Create<TMonad>(TMonad)Converts the monad to Optional<T>.
Declarationpublic static Optional<T> Create<TMonad>(TMonad value) where TMonad : struct, IOptionMonad<T>
Parameters Type Name Description TMonad value
The value to convert.
Returns Type Parameters Name Description TMonadThe type of the monad.
| Edit this page View Source Equals(Optional<T>)Determines whether this container stores the same value as the specified one.
Declarationpublic bool Equals(Optional<T> other)
Parameters Type Name Description Optional<T> other
The container to compare.
Returns Type Description booltrue if this container stores the same value as other
; otherwise, false.
Determines whether this container stores the same value as the specified one.
Declarationpublic override bool Equals(object? other)
Parameters Type Name Description object other
The container to compare.
Returns Type Description booltrue if this container stores the same value as other
; otherwise, false.
Performs equality check between stored value and the specified value using method Equals(object, object).
Declarationpublic bool Equals(object? other, IEqualityComparer comparer)
Parameters Type Name Description object other
Other object to compare with Value.
IEqualityComparer comparerThe comparer implementing custom equality check.
Returns Type Description booltrue if other
is equal to Value using custom check; otherwise, false.
Determines whether this container stored the same value as the specified value.
Declarationpublic bool Equals(T? other)
Parameters Type Name Description T other
Other value to compare.
Returns | Edit this page View Source GetHashCode()Computes hash code of the stored value.
Declarationpublic override int GetHashCode()
Returns Type Description int
The hash code of the stored value.
Overrides | Edit this page View Source GetHashCode(IEqualityComparer)Computes hash code for the stored value using method GetHashCode(object).
Declarationpublic int GetHashCode(IEqualityComparer comparer)
Parameters Type Name Description IEqualityComparer comparer
The comparer implementing hash code function.
Returns Type Description intThe hash code of Value.
| Edit this page View Source GetReference(delegate*<Exception>)Gets an immutable reference to the value in the container.
Declaration[CLSCompliant(false)]
public ref readonly T GetReference(delegate*<Exception> exceptionFactory)
Parameters Type Name Description delegate*<Exception> exceptionFactory
The factory used to produce exception if the container has no value.
Returns Type Description TThe immutable reference to the value in the container.
| Edit this page View Source GetReference(Func<Exception>)Gets an immutable reference to the value in the container.
Declarationpublic ref readonly T GetReference(Func<Exception> exceptionFactory)
Parameters Type Name Description Func<Exception> exceptionFactory
The factory used to produce exception if the container has no value.
Returns Type Description TThe immutable reference to the value in the container.
| Edit this page View Source GetReference<TException>()Gets an immutable reference to the value in the container.
Declarationpublic ref readonly T GetReference<TException>() where TException : Exception, new()
Returns Type Description T
The immutable reference to the value in the container.
Type Parameters Name Description TExceptionThe type of the exception to throw if the optional container has no value.
| Edit this page View Source If(delegate*<T, bool>)If a value is present, and the value matches the given predicate, return an Optional describing the value, otherwise return an empty Optional.
Declaration[CLSCompliant(false)]
public Optional<T> If(delegate*<T, bool> condition)
Parameters Type Name Description delegate*<T, bool> 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.
| Edit this page View Source 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.
Declarationpublic Optional<T> If(Predicate<T> condition)
Parameters Type Name Description 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.
| Edit this page View Source IsValueDefined(T?)Determines whether the object represents meaningful value.
Declarationpublic static bool IsValueDefined(T? value)
Parameters Type Name Description T value
The value to check.
Returns | Edit this page View Source Or(T?)Returns the value if present; otherwise return default value.
Declarationpublic T? Or(T? defaultValue)
Parameters Type Name Description T defaultValue
The value to be returned if there is no value present.
Returns Type Description TThe value, if present, otherwise defaultValue
.
Returns the value if present; otherwise invoke delegate.
Declaration[CLSCompliant(false)]
public T OrInvoke(delegate*<T> defaultFunc)
Parameters Type Name Description delegate*<T> defaultFunc
A delegate to be invoked if value is not present.
Returns Type Description TThe value, if present, otherwise returned from delegate.
| Edit this page View Source OrInvoke(Func<T>)Returns the value if present; otherwise invoke delegate.
Declarationpublic T OrInvoke(Func<T> defaultFunc)
Parameters Type Name Description Func<T> defaultFunc
A delegate to be invoked if value is not present.
Returns Type Description TThe value, if present, otherwise returned from delegate.
| Edit this page View Source OrThrow(delegate*<Exception>)If a value is present, returns the value, otherwise throw exception.
Declaration[CLSCompliant(false)]
public T OrThrow(delegate*<Exception> exceptionFactory)
Parameters Type Name Description delegate*<Exception> exceptionFactory
Exception factory.
Returns Type Description TThe value, if present.
| Edit this page View Source OrThrow(Func<Exception>)If a value is present, returns the value, otherwise throw exception.
Declarationpublic T OrThrow(Func<Exception> exceptionFactory)
Parameters Type Name Description Func<Exception> exceptionFactory
Exception factory.
Returns Type Description TThe value, if present.
| Edit this page View Source OrThrow<TException>()If a value is present, returns the value, otherwise throw exception.
Declarationpublic T OrThrow<TException>() where TException : Exception, new()
Returns Type Description T
The value, if present.
Type Parameters Name Description TExceptionType of exception to throw.
| Edit this page View Source ToString()Returns textual representation of this object.
Declarationpublic override string? ToString()
Returns Type Description string
The textual representation of this object.
Overrides | Edit this page View Source TryGet(out T?)Attempts to extract value from this container if it is present.
Declarationpublic bool TryGet(out T? value)
Parameters Type Name Description T value
Extracted value.
Returns Type Description booltrue if value is present; otherwise, false.
| Edit this page View Source TryGet(out T?, out bool)Attempts to extract value from this container if it is present.
Declarationpublic bool TryGet(out T? value, out bool isNull)
Parameters Type Name Description T value
Extracted value.
bool isNulltrue if underlying value is null; otherwise, false.
Returns Type Description booltrue if value is present; otherwise, false.
Operators | Edit this page View Source operator |(in Optional<T>, in Optional<T>)Returns non-empty container.
Declarationpublic static Optional<T> operator |(in Optional<T> first, in Optional<T> second)
Parameters Type Name Description Optional<T> first
The first container.
Optional<T> secondThe second container.
Returns Type Description Optional<T>The first non-empty container.
See Also | Edit this page View Source operator |(in Optional<T>, T?)Returns the value if present; otherwise return default value.
Declarationpublic static T? operator |(in Optional<T> optional, T? defaultValue)
Parameters Type Name Description Optional<T> optional
The optional value.
T defaultValueThe value to be returned if there is no value present.
Returns Type Description TThe value, if present, otherwise defaultValue
.
Determines whether two containers store the same value.
Declarationpublic 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> secondThe second container to compare.
Returns Type Description booltrue, if both containers store the same value; otherwise, false.
| Edit this page View Source operator ^(in Optional<T>, in Optional<T>)Determines whether two containers are empty or have values.
Declarationpublic static Optional<T> operator ^(in Optional<T> first, in Optional<T> second)
Parameters Type Name Description Optional<T> first
The first container.
Optional<T> secondThe second container.
Returns Type Description Optional<T>None, if both containers are empty or have values; otherwise, non-empty container.
| Edit this page View Source explicit operator T(in Optional<T>)Extracts value stored in the Optional container.
Declarationpublic static explicit operator T(in Optional<T> optional)
Parameters Type Name Description Optional<T> optional
The container.
Returns Exceptions | Edit this page View Source operator false(in Optional<T>)Checks whether the container has no value.
Declarationpublic static bool operator false(in Optional<T> optional)
Parameters Type Name Description Optional<T> optional Returns Type Description bool
true if this container has no value; otherwise, false.
| Edit this page View Source implicit operator Optional<T>(T?)Wraps value into Optional container.
Declarationpublic static implicit operator Optional<T>(T? value)
Parameters Type Name Description T value
The value to convert.
Returns | Edit this page View Source operator !=(in Optional<T>, in Optional<T>)Determines whether two containers store the different values.
Declarationpublic 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> secondThe second container to compare.
Returns Type Description booltrue, if both containers store the different values; otherwise, false.
| Edit this page View Source operator !(in Optional<T>)Checks whether the container has no value.
Declarationpublic static bool operator !(in Optional<T> optional)
Parameters Type Name Description Optional<T> optional Returns Type Description bool
true if this container has no value; otherwise, false.
| Edit this page View Source operator true(in Optional<T>)Checks whether the container has value.
Declarationpublic static bool operator true(in Optional<T> optional)
Parameters Type Name Description Optional<T> optional Returns Type Description bool
true if this container has value; otherwise, false.
Implements Extension MethodsRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4