Struct Result<T>
Represents a result of operation which can be actual result or exception.
Inherited Members
Namespace: DotNext
Assembly: DotNext.dll
Syntax
public readonly struct Result<T> : IResultMonad<T, Exception, Result<T>>, IResultMonad<T, Exception>, IOptionMonad<T, Result<T>>, IOptionMonad<T>, ISupplier<object?>, IFunctional<Func<object?>>
Type Parameters
Name | Description |
---|---|
T | The type of the value stored in the Result monad. |
Constructors
| Edit this page View SourceResult(Exception)
Initializes a new unsuccessful result.
Declaration
public Result(Exception error)
Parameters
Type | Name | Description |
---|---|---|
Exception | error | The exception representing error. Cannot be null. |
Result(T)
Initializes a new successful result.
Declaration
public Result(T value)
Parameters
Type | Name | Description |
---|---|---|
T | value | The value to be stored as result. |
Properties
| Edit this page View SourceError
Gets exception associated with this result.
Declaration
public Exception? Error { get; }
Property Value
Type | Description |
---|---|
Exception |
IsSuccessful
Indicates that the result is successful.
Declaration
public bool IsSuccessful { get; }
Property Value
Type | Description |
---|---|
bool | true if this result is successful; false if this result represents exception. |
Value
Extracts the actual result.
Declaration
public T Value { get; }
Property Value
Type | Description |
---|---|
T |
Exceptions
Type | Condition |
---|---|
Exception | This result is not successful. |
ValueOrDefault
Gets the value if present; otherwise return default value.
Declaration
public T? ValueOrDefault { get; }
Property Value
Type | Description |
---|---|
T | The value, if present, otherwise |
ValueRef
Gets a reference to the underlying value.
Declaration
[JsonIgnore]
public ref readonly T ValueRef { get; }
Property Value
Type | Description |
---|---|
T | The reference to the result. |
Exceptions
Type | Condition |
---|---|
Exception | The result is unavailable. |
Methods
| Edit this page View SourceBox()
Gets boxed representation of the result.
Declaration
public Result<object?> Box()
Returns
Type | Description |
---|---|
Result<object> | The boxed representation of the result. |
Convert<TResult>(delegate*<T, TResult>)
If successful result is present, apply the provided mapping function hiding any exception caused by the converter.
Declaration
[CLSCompliant(false)]
public Result<TResult> Convert<TResult>(delegate*<T, TResult> converter)
Parameters
Type | Name | Description |
---|---|---|
delegate*<T, TResult> | converter | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Result<TResult> | The conversion result. |
Type Parameters
Name | Description |
---|---|
TResult | The type of the result of the mapping function. |
Convert<TResult>(Converter<T, TResult>)
If successful result is present, apply the provided mapping function hiding any exception caused by the converter.
Declaration
public Result<TResult> Convert<TResult>(Converter<T, TResult> converter)
Parameters
Type | Name | Description |
---|---|---|
Converter<T, TResult> | converter | A mapping function to be applied to the value, if present. |
Returns
Type | Description |
---|---|
Result<TResult> | The conversion result. |
Type Parameters
Name | Description |
---|---|
TResult | The type of the result of the mapping function. |
FromOptional(in Optional<T>)
Creates Result<T> from Optional<T> instance.
Declaration
public static Result<T> FromOptional(in Optional<T> optional)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | optional | The optional value. |
Returns
Type | Description |
---|---|
Result<T> | The converted optional value. |
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 this result is unsuccessful. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise |
OrInvoke(delegate*<Exception, T>)
Returns the value if present; otherwise invoke delegate.
Declaration
[CLSCompliant(false)]
public T OrInvoke(delegate*<Exception, T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
delegate*<Exception, 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(delegate*<Exception, T>)
Returns the value if present; otherwise invoke delegate.
Declaration
[CLSCompliant(false)]
public T OrInvoke(delegate*<Exception, T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
delegate*<Exception, 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(Func<Exception, T>)
Returns the value if present; otherwise invoke delegate.
Declaration
public T OrInvoke(Func<Exception, T> defaultFunc)
Parameters
Type | Name | Description |
---|---|---|
Func<Exception, 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(Func<T>)
Returns the value if present; otherwise invoke delegate.
Declaration
public 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 |
---|---|
T | The value, if present, otherwise returned from delegate. |
ToString()
Returns textual representation of this object.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
string | The textual representation of this object. |
Overrides
| Edit this page View SourceTryGet()
Converts the result into Optional<T>.
Declaration
public Optional<T> TryGet()
Returns
Type | Description |
---|---|
Optional<T> | Option monad representing value in this monad. |
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 |
---|---|
bool |
Operators
| Edit this page View Sourceoperator &(in Result<T>, in Result<T>)
Indicates that both results are successful.
Declaration
public static bool operator &(in Result<T> left, in Result<T> right)
Parameters
Type | Name | Description |
---|---|---|
Result<T> | left | The first result to check. |
Result<T> | right | The second result to check. |
Returns
Type | Description |
---|---|
bool |
operator |(in Result<T>, in Result<T>)
Tries to return successful result.
Declaration
public static Result<T> operator |(in Result<T> x, in Result<T> y)
Parameters
Type | Name | Description |
---|---|---|
Result<T> | x | The first container. |
Result<T> | y | The second container. |
Returns
Type | Description |
---|---|
Result<T> | The first successful result. |
operator |(in Result<T>, T?)
Returns the value if present; otherwise return default value.
Declaration
public static T? operator |(in Result<T> result, T? defaultValue)
Parameters
Type | Name | Description |
---|---|---|
Result<T> | result | The result to check. |
T | defaultValue | The value to be returned if this result is unsuccessful. |
Returns
Type | Description |
---|---|
T | The value, if present, otherwise |
explicit operator Result<T>(in Optional<T>)
Converts Optional<T> to Result<T>.
Declaration
public static explicit operator Result<T>(in Optional<T> optional)
Parameters
Type | Name | Description |
---|---|---|
Optional<T> | optional | The optional value. |
Returns
Type | Description |
---|---|
Result<T> | The result representing optional value. |
explicit operator T(in Result<T>)
Extracts actual result.
Declaration
public static explicit operator T(in Result<T> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T> | result | The result object. |
Returns
Type | Description |
---|---|
T |
operator false(in Result<T>)
Indicates that the result represents error.
Declaration
public static bool operator false(in Result<T> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T> | result | The result to check. |
Returns
Type | Description |
---|---|
bool | false if this result is successful; true if this result represents exception. |
implicit operator Optional<T>(in Result<T>)
Converts the result into Optional<T>.
Declaration
public static implicit operator Optional<T>(in Result<T> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T> | result | The result to be converted. |
Returns
Type | Description |
---|---|
Optional<T> | Option monad representing value in this monad. |
implicit operator Result<T>(T)
Converts value into the result.
Declaration
public static implicit operator Result<T>(T result)
Parameters
Type | Name | Description |
---|---|---|
T | result | The result to be converted. |
Returns
Type | Description |
---|---|
Result<T> | The result representing |
operator true(in Result<T>)
Indicates that the result is successful.
Declaration
public static bool operator true(in Result<T> result)
Parameters
Type | Name | Description |
---|---|---|
Result<T> | result | The result to check. |
Returns
Type | Description |
---|---|
bool | true if this result is successful; false if this result represents exception. |