Table of Contents

Struct Optional<T>

Namespace
DynamicData.Kernel
Assembly
DynamicData.dll

The equivalent of a nullable type which works on value and reference types.

public readonly struct Optional<T> : IEquatable<Optional<T>> where T : notnull

Type Parameters

T

The underlying value type of the Nullable<T> generic type.

Implements
Extension Methods
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)

Properties

HasValue

Gets a value indicating whether the current Nullable<T> object has a value.

public bool HasValue { get; }

Property Value

bool

true if the current Nullable<T> object has a value; false if the current Nullable<T> object has no value.

None

Gets the default valueless optional.

public static Optional<T> None { get; }

Property Value

Optional<T>

Value

Gets the value of the current Nullable<T> value.

public T Value { get; }

Property Value

T

The value of the current Nullable<T> object if the HasValue property is true. An exception is thrown if the HasValue property is false.

Exceptions

InvalidOperationException

The HasValue property is false.

Methods

Create(T?)

Creates the specified value.

public static Optional<T> Create(T? value)

Parameters

value T

The value.

Returns

Optional<T>

The optional value.

Equals(Optional<T>)

public bool Equals(Optional<T> other)

Parameters

other Optional<T>

Returns

bool

Equals(object?)

public override bool Equals(object? obj)

Parameters

obj object

Returns

bool

FromOptional(in Optional<T>)

Gets the value from the optional value.

public static T? FromOptional(in Optional<T> value)

Parameters

value Optional<T>

The optional value.

Returns

T

The value.

GetHashCode()

public override int GetHashCode()

Returns

int

ToOptional(T?)

Gets the optional from a value.

public static Optional<T> ToOptional(T? value)

Parameters

value T

The value to get the optional for.

Returns

Optional<T>

The optional.

ToString()

public override string? ToString()

Returns

string

Operators

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

public static bool operator ==(in Optional<T> left, in Optional<T> right)

Parameters

left Optional<T>
right Optional<T>

Returns

bool

explicit operator T?(in Optional<T>)

Explicit cast from option to value.

public static explicit operator T?(in Optional<T> value)

Parameters

value Optional<T>

The value.

Returns

T

The optional value.

implicit operator Optional<T>(T?)

Implicit cast from the vale to the optional.

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

Parameters

value T

The value.

Returns

Optional<T>

The optional value.

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

public static bool operator !=(in Optional<T> left, in Optional<T> right)

Parameters

left Optional<T>
right Optional<T>

Returns

bool