Skip to content

Instantly share code, notes, and snippets.

@chrisfcarroll
Last active May 8, 2025 12:42
Show Gist options
  • Save chrisfcarroll/96931697e6c4907b7d855bb7d9c4d641 to your computer and use it in GitHub Desktop.
Save chrisfcarroll/96931697e6c4907b7d855bb7d9c4d641 to your computer and use it in GitHub Desktop.
Parse.cs : Parse things without throwing an Exception by returning a default value on failure
using System;
/// <summary>
/// Parse things without throwing an Exception by returning a default value on failure
/// </summary>
public static class Parse
{
public static int ToInt(this string value, int defaultValue=0) => IntElse(value,defaultValue);
/// <summary>
/// Parses <param name="value"></param> to an enum of type <typeparam name="T"></typeparam>
/// </summary>
/// <returns>
/// The parsed enum value, or <paramref name="defaultValue"/> if parsing failed.
/// </returns>
public static T Enum<T>(string value, T defaultValue = default) where T : struct, Enum
{
return System.Enum.TryParse<T>(value, out var result)
? result
: defaultValue;
}
/// <summary>
/// Try to parse <paramref name="value"/>, else return <see cref="defaultValue"/>
/// </summary>
/// <param name="value"></param>
/// <param name="defaultValue"></param>
/// <returns>
/// <c>int.TryParse(value, out var result) ? result : defaultValue</c>
/// </returns>
public static int IntElse(string? value, int defaultValue = 0)
=> int.TryParse(value, out var result) ? result : defaultValue;
/// <summary>
/// Try to parse <paramref name="value"/>, else return <see cref="defaultValue"/>
/// </summary>
/// <param name="value"></param>
/// <param name="defaultValue"></param>
/// <returns>
/// <c>double.TryParse(value, out var result) ? result : defaultValue</c>
/// </returns>
public static double DoubleElse(string? value, double defaultValue = default)
=> double.TryParse(value, out var result) ? result : defaultValue;}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment