Table of Contents

Struct Optional<T>

Namespace
The.Utility
Assembly
Instagile.Model.dll

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

v T

Fields

HasValue

public readonly bool HasValue

Field Value

bool

Methods

Cast<U>()

public Optional<U> Cast<U>()

Returns

Optional<U>

Type Parameters

U

Equals(object?)

public override bool Equals(object? o)

Parameters

o object

Returns

bool

GetHashCode()

public override int GetHashCode()

Returns

int

GetValueOrDefault()

public T? GetValueOrDefault()

Returns

T

GetValueOrDefault(Func<T>)

public T GetValueOrDefault(Func<T> defaultFactory)

Parameters

defaultFactory Func<T>

Returns

T

GetValueOrDefault(T)

public T GetValueOrDefault(T @default)

Parameters

default T

Returns

T

If(Action<T>, Action?)

public void If(Action<T> then, Action? @else = null)

Parameters

then Action<T>
else Action

If(Func<T, bool>)

public bool If(Func<T, bool> then)

Parameters

then Func<T, bool>

Returns

bool

If(Func<T, Task>, Func<Task>?)

public Task If(Func<T, Task> then, Func<Task>? @else = null)

Parameters

then Func<T, Task>
else Func<Task>

Returns

Task

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

then Func<T, Task<U>>
else Func<Task<U>>

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

then Func<T, Task<U>>
else Func<U>

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

then Func<T, U>
else Func<U>

Returns

U

Type Parameters

U

If<U>(Func<T, U>, U)

public U If<U>(Func<T, U> then, U @else)

Parameters

then Func<T, U>
else U

Returns

U

Type Parameters

U

OrDefault(Optional<T>)

public Optional<T> OrDefault(Optional<T> orElse)

Parameters

orElse Optional<T>

Returns

Optional<T>

SelectMany<U>(Func<T, IEnumerable<U>>)

public IEnumerable<U> SelectMany<U>(Func<T, IEnumerable<U>> f)

Parameters

f Func<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

f Func<T, string>
s Func<T, string, U>

Returns

Optional<U>

Type Parameters

U

SelectMany<U>(Func<T, Optional<U>>)

public Optional<U> SelectMany<U>(Func<T, Optional<U>> f)

Parameters

f Func<T, Optional<U>>

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

f Func<T, U?>
s Func<T, U, V>

Returns

Optional<V>

Type Parameters

U
V

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

f Func<T, Optional<U>>
s Func<T, U, V>

Returns

Optional<V>

Type Parameters

U
V

Select<U>(Func<T, U>)

public Optional<U> Select<U>(Func<T, U> f)

Parameters

f Func<T, U>

Returns

Optional<U>

Type Parameters

U

ToString()

public override string ToString()

Returns

string

Where(Func<T, bool>)

public Optional<T> Where(Func<T, bool> f)

Parameters

f Func<T, bool>

Returns

Optional<T>

Operators

operator ==(Optional<T>, Optional<T>)

public static bool operator ==(Optional<T> a, Optional<T> b)

Parameters

a Optional<T>
b Optional<T>

Returns

bool

implicit operator Optional<T>(T?)

public static implicit operator Optional<T>(T? t)

Parameters

t T

Returns

Optional<T>

operator !=(Optional<T>, Optional<T>)

public static bool operator !=(Optional<T> a, Optional<T> b)

Parameters

a Optional<T>
b Optional<T>

Returns

bool