Last active
May 8, 2025 12:42
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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