Could not prevent myself to produce a generic version. Usage below.
public class NullableHelper
{
public delegate bool TryDelegate(string s, out T result);
public static bool TryParseNullable(string s, out T? result, TryDelegate tryDelegate) where T : struct
{
if (s == null)
{
result = null;
return true;
}
T temp;
bool success = tryDelegate(s, out temp);
result = temp;
return success;
}
public static T? ParseNullable(string s, TryDelegate tryDelegate) where T : struct
{
if (s == null)
{
return null;
}
T temp;
return tryDelegate(s, out temp)
? (T?)temp
: null;
}
}
bool? answer = NullableHelper.ParseNullable(answerAsString, Boolean.TryParse);