Browse Source

Use _value field where possible.

Allows more code to be inlined by not checking `HasValue` twice.
pull/3255/head
Steven Kirk 7 years ago
parent
commit
8e9a1cce04
  1. 10
      src/Avalonia.Base/Data/BindingValue.cs
  2. 10
      src/Avalonia.Base/Data/Optional.cs

10
src/Avalonia.Base/Data/BindingValue.cs

@ -135,10 +135,10 @@ namespace Avalonia.Data
/// Converts the binding value to an <see cref="Optional{T}"/>. /// Converts the binding value to an <see cref="Optional{T}"/>.
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public Optional<T> ToOptional() => HasValue ? new Optional<T>(Value) : default; public Optional<T> ToOptional() => HasValue ? new Optional<T>(_value) : default;
/// <inheritdoc/> /// <inheritdoc/>
public override string ToString() => HasError ? $"Error: {Error!.Message}" : Value?.ToString() ?? "(null)"; public override string ToString() => HasError ? $"Error: {Error!.Message}" : _value?.ToString() ?? "(null)";
/// <summary> /// <summary>
/// Converts the value to untyped representation, using <see cref="AvaloniaProperty.UnsetValue"/>, /// Converts the value to untyped representation, using <see cref="AvaloniaProperty.UnsetValue"/>,
@ -152,7 +152,7 @@ namespace Avalonia.Data
{ {
BindingValueType.UnsetValue => AvaloniaProperty.UnsetValue, BindingValueType.UnsetValue => AvaloniaProperty.UnsetValue,
BindingValueType.DoNothing => BindingOperations.DoNothing, BindingValueType.DoNothing => BindingOperations.DoNothing,
BindingValueType.Value => Value, BindingValueType.Value => _value,
BindingValueType.BindingError => BindingValueType.BindingError =>
new BindingNotification(Error, BindingErrorType.Error), new BindingNotification(Error, BindingErrorType.Error),
BindingValueType.BindingErrorWithFallback => BindingValueType.BindingErrorWithFallback =>
@ -190,7 +190,7 @@ namespace Avalonia.Data
/// </summary> /// </summary>
/// <param name="defaultValue">The default value.</param> /// <param name="defaultValue">The default value.</param>
/// <returns>The value.</returns> /// <returns>The value.</returns>
public T ValueOrDefault(T defaultValue = default) => HasValue ? Value : defaultValue; public T ValueOrDefault(T defaultValue = default) => HasValue ? _value : defaultValue;
/// <summary> /// <summary>
/// Gets the value of the binding value if present, otherwise a default value. /// Gets the value of the binding value if present, otherwise a default value.
@ -204,7 +204,7 @@ namespace Avalonia.Data
public TResult ValueOrDefault<TResult>(TResult defaultValue = default) public TResult ValueOrDefault<TResult>(TResult defaultValue = default)
{ {
return HasValue ? return HasValue ?
Value is TResult result ? result : default _value is TResult result ? result : default
: defaultValue; : defaultValue;
} }

10
src/Avalonia.Base/Data/Optional.cs

@ -54,23 +54,23 @@ namespace Avalonia.Data
public bool Equals(Optional<T> other) => this == other; public bool Equals(Optional<T> other) => this == other;
/// <inheritdoc/> /// <inheritdoc/>
public override int GetHashCode() => HasValue ? Value!.GetHashCode() : 0; public override int GetHashCode() => HasValue ? _value?.GetHashCode() ?? 0 : 0;
/// <summary> /// <summary>
/// Casts the value (if any) to an <see cref="object"/>. /// Casts the value (if any) to an <see cref="object"/>.
/// </summary> /// </summary>
/// <returns>The cast optional value.</returns> /// <returns>The cast optional value.</returns>
public Optional<object> ToObject() => HasValue ? new Optional<object>(Value) : default; public Optional<object> ToObject() => HasValue ? new Optional<object>(_value) : default;
/// <inheritdoc/> /// <inheritdoc/>
public override string ToString() => HasValue ? Value?.ToString() ?? "(null)" : "(empty)"; public override string ToString() => HasValue ? _value?.ToString() ?? "(null)" : "(empty)";
/// <summary> /// <summary>
/// Gets the value if present, otherwise a default value. /// Gets the value if present, otherwise a default value.
/// </summary> /// </summary>
/// <param name="defaultValue">The default value.</param> /// <param name="defaultValue">The default value.</param>
/// <returns>The value.</returns> /// <returns>The value.</returns>
public T ValueOrDefault(T defaultValue = default) => HasValue ? Value : defaultValue; public T ValueOrDefault(T defaultValue = default) => HasValue ? _value : defaultValue;
/// <summary> /// <summary>
/// Gets the value if present, otherwise a default value. /// Gets the value if present, otherwise a default value.
@ -84,7 +84,7 @@ namespace Avalonia.Data
public TResult ValueOrDefault<TResult>(TResult defaultValue = default) public TResult ValueOrDefault<TResult>(TResult defaultValue = default)
{ {
return HasValue ? return HasValue ?
Value is TResult result ? result : default _value is TResult result ? result : default
: defaultValue; : defaultValue;
} }

Loading…
Cancel
Save