private readonly string _originalValue;
public UserEntry(string input)
return int.TryParse(_originalValue, out var dummy);
return ToInt(default(int));
public int ToInt(int defaultValue)
bool ok = int.TryParse(_originalValue, out result);
return ok ? result : defaultValue;
public override string ToString()
static public implicit operator UserEntry(string input)
return new UserEntry(input);
static public implicit operator Int32(UserEntry input)
private const int MaximumOrder = 10;
public static void Main()
var n = AskForNumberOfShirts();
Console.WriteLine("OK, I'll order {0} shirts.", n);
public static int AskForNumberOfShirts()
Console.WriteLine("Enter the number of shirts to order:");
UserEntry entry = Console.ReadLine();
Console.WriteLine("You entered an invalid number.");
if (entry > MaximumOrder)
Console.WriteLine("{0} is too many! Please enter {1} or fewer.", entry, MaximumOrder);