Struct Optional<T>
Represents potentially nonpresent properties.
public struct Optional<T>
Type Parameters
T
- Inherited Members
Remarks
Has the following improvements over Nullable:
- immutable
- safe (nonthrowing)
- reference/value agnostic
technically it's a monad but you don't need to worry about that
Constructors
Optional(T)
public Optional(T v)
Parameters
vT
Fields
HasValue
public readonly bool HasValue
Field Value
Methods
Cast<U>()
public Optional<U> Cast<U>()
Returns
- Optional<U>
Type Parameters
U
Equals(object?)
public override bool Equals(object? o)
Parameters
oobject
Returns
GetHashCode()
public override int GetHashCode()
Returns
GetValueOrDefault()
public T? GetValueOrDefault()
Returns
- T
GetValueOrDefault(Func<T>)
public T GetValueOrDefault(Func<T> defaultFactory)
Parameters
defaultFactoryFunc<T>
Returns
- T
GetValueOrDefault(T)
public T GetValueOrDefault(T @default)
Parameters
defaultT
Returns
- T
If(Action<T>, Action?)
public void If(Action<T> then, Action? @else = null)
Parameters
If(Func<T, bool>)
public bool If(Func<T, bool> then)
Parameters
Returns
If(Func<T, Task>, Func<Task>?)
public Task If(Func<T, Task> then, Func<Task>? @else = null)
Parameters
Returns
If<U>(Func<T, Task<U>>, Func<Task<U>>?)
public Task<U?> If<U>(Func<T, Task<U>> then, Func<Task<U>>? @else = null)
Parameters
Returns
- Task<U>
Type Parameters
U
If<U>(Func<T, Task<U>>, Func<U>)
public Task<U> If<U>(Func<T, Task<U>> then, Func<U> @else)
Parameters
Returns
- Task<U>
Type Parameters
U
If<U>(Func<T, U>, Func<U>)
public U If<U>(Func<T, U> then, Func<U> @else)
Parameters
Returns
- U
Type Parameters
U
If<U>(Func<T, U>, U)
public U If<U>(Func<T, U> then, U @else)
Parameters
thenFunc<T, U>elseU
Returns
- U
Type Parameters
U
OrDefault(Optional<T>)
public Optional<T> OrDefault(Optional<T> orElse)
Parameters
orElseOptional<T>
Returns
- Optional<T>
SelectMany<U>(Func<T, IEnumerable<U>>)
public IEnumerable<U> SelectMany<U>(Func<T, IEnumerable<U>> f)
Parameters
fFunc<T, IEnumerable<U>>
Returns
- IEnumerable<U>
Type Parameters
U
SelectMany<U>(Func<T, string>, Func<T, string, U>)
public Optional<U> SelectMany<U>(Func<T, string> f, Func<T, string, U> s)
Parameters
Returns
- Optional<U>
Type Parameters
U
SelectMany<U>(Func<T, Optional<U>>)
public Optional<U> SelectMany<U>(Func<T, Optional<U>> f)
Parameters
Returns
- Optional<U>
Type Parameters
U
SelectMany<U, V>(Func<T, U?>, Func<T, U, V>)
public Optional<V> SelectMany<U, V>(Func<T, U?> f, Func<T, U, V> s) where U : struct
Parameters
Returns
- Optional<V>
Type Parameters
UV
SelectMany<U, V>(Func<T, Optional<U>>, Func<T, U, V>)
public Optional<V> SelectMany<U, V>(Func<T, Optional<U>> f, Func<T, U, V> s)
Parameters
Returns
- Optional<V>
Type Parameters
UV
Select<U>(Func<T, U>)
public Optional<U> Select<U>(Func<T, U> f)
Parameters
fFunc<T, U>
Returns
- Optional<U>
Type Parameters
U
ToString()
public override string ToString()
Returns
Where(Func<T, bool>)
public Optional<T> Where(Func<T, bool> f)
Parameters
Returns
- Optional<T>
Operators
operator ==(Optional<T>, Optional<T>)
public static bool operator ==(Optional<T> a, Optional<T> b)
Parameters
Returns
implicit operator Optional<T>(T?)
public static implicit operator Optional<T>(T? t)
Parameters
tT
Returns
- Optional<T>
operator !=(Optional<T>, Optional<T>)
public static bool operator !=(Optional<T> a, Optional<T> b)