Return<TIn, TOut>

/// <summary>
/// Returns a value based on an provided value and evaluation function
/// </summary>
public static TOut Return<TIn, TOut>(
    this TIn value, 
    Func<TIn, TOut> evaluateFunc)
    return evaluateFunc(value);

return foo.Bar().Return( bar => bar.IsBaz 
   ? (Baz)bar : Baz.Empty );

// Alternative to:

var bar = foo.Bar();
return bar.IsBaz ? (Baz)bar : Baz.Empty;


A 'fluent' logic extension method that takes a value (can be anything) and a function that returns another value (can be anything) based on its logic. This is useful for both evaluating and optionally returning a value without declaring a temporary variable for the value.


Double click on the code to select all.