internal class Program > { > private static void Main() > { > string s = "123"; > int i; > if (!int.TryParse(s, out i)) > { > //error > } > > TryParseReturnObject ret = JohnsTryParse(s); > if (!ret.success) > { > //Error > } > i = ret.result; > } > > private static TryParseReturnObject JohnsTryParse(string s) > { > int result; > bool success = int.TryParse(s, out result); > return new TryParseReturnObject{result = result,success = success}; > } > } > > public class TryParseReturnObject > { > public int result { get; set; } > public bool success { get; set; } > }The Match object returned for RegEx uses your 'TryParseReturnObject' technique