Show / Hide Table of Contents

    Struct NotNull<T>

    Represents an object that cannot be null.
    Inherited Members
    System.ValueType.ToString()
    System.Object.Equals(System.Object, System.Object)
    System.Object.GetType()
    System.Object.ReferenceEquals(System.Object, System.Object)
    Namespace: Maki
    Assembly: Maki.dll
    Syntax
    public struct NotNull<T>
    Type Parameters
    Name Description
    T Type of object.
    Examples
    The following example shows how to unpack a potentially null value into a NotNull. Once wrapped in a NotNull, code does not need to perform any additional null checks.
    using Maki;
    using System;
    
    namespace Samples
    {
        class Program
        {
            // No need to check argument before using it, it can never be null
            static void UseValue(NotNull<string> value)
            {
                Console.WriteLine(value.Item);
            }
    
            static void Main(string[] args)
            {
                // An instance that could be null
                string valueOrNull = null;
                if (DateTime.Today.DayOfWeek == DayOfWeek.Friday)
                    valueOrNull = "It's Friday!";
    
                // Perform a null check before assigning to NotNull<>
                if (valueOrNull == null)
                    return;
    
                // value is guaranteed to be non-null
                NotNull<string> value = valueOrNull;
    
                // No need to null check from here on
                UseValue(value);
            }
        }
    }

    Constructors

    | Improve this Doc View Source

    NotNull(T)

    Creates a new NotNull from the given object.
    Declaration
    public NotNull(T item)
    Parameters
    Type Name Description
    T item Object to store.
    Exceptions
    Type Condition
    System.ArgumentNullException Thrown if the argument is null.

    Properties

    | Improve this Doc View Source

    Item

    Gets the object.
    Declaration
    public T Item { get; }
    Property Value
    Type Description
    T

    Methods

    | Improve this Doc View Source

    Equals(Object)

    Determines whether the specified object is equal to the current object.
    Declaration
    public override bool Equals(object obj)
    Parameters
    Type Name Description
    System.Object obj The object to compare with the current object.
    Returns
    Type Description
    System.Boolean True if the objects are equal.
    Overrides
    System.ValueType.Equals(System.Object)
    | Improve this Doc View Source

    GetHashCode()

    Returns the hash code for this instance.
    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    System.Int32 Hash code.
    Overrides
    System.ValueType.GetHashCode()
    | Improve this Doc View Source

    MakeOptional(T)

    Creates an Optional from the given object which is either Nothing if the object is null or NotNull if the object is not null.
    Declaration
    public static Optional<NotNull<T>> MakeOptional(T value)
    Parameters
    Type Name Description
    T value Object to store.
    Returns
    Type Description
    Optional<NotNull<T>> NotNull if object is not null, Nothing otherwise.

    Operators

    | Improve this Doc View Source

    Implicit(T to NotNull<T>)

    Creates a new NotNull from the given object.
    Declaration
    public static implicit operator NotNull<T>(T item)
    Parameters
    Type Name Description
    T item Object to store.
    Returns
    Type Description
    NotNull<T>
    | Improve this Doc View Source

    Implicit(NotNull<T> to T)

    Implicit conversion to contained type.
    Declaration
    public static implicit operator T(NotNull<T> notNull)
    Parameters
    Type Name Description
    NotNull<T> notNull NotNull instance.
    Returns
    Type Description
    T

    Extension Methods

    NotNullExtensions.Bind<T, U>(NotNull<T>, Func<T, NotNull<U>>)
    NotNullExtensions.Map<T, U>(NotNull<T>, Func<T, U>)
    • Improve this Doc
    • View Source
    Back to top Generated by DocFX