Well, in my code I have another method similar to: void DoStuff(Type type, string input) { object value; if (TryParse(input, out value) { // ... } }
I made a mistake and forgot to pass "type" to TryParse. I discovered the bug only at runtime when testing my code. I can understand the compiler behavior, but it is not what I expect since I think in most case, the programmer did not intend to do that. A warning would be nice here IMO. Sébastien On 4/11/08, Greg Young <[EMAIL PROTECTED]> wrote: > object value; > Parser.TryParse(typeof(int), "1", out value); > > > is a valid call to the second (non-generic method). > > > It would seem to me that it is then inferring T as object here ... > > > return TryParse(input, out value); > > > because if > > public static bool TryParse<T>(string input, out T value) value is > an object ... (and its a T) T must be an object. > > > What were you expecting to be the error and why? > > Cheers, > > Greg > > > On Fri, Apr 11, 2008 at 5:06 PM, Sébastien Lorion > <[EMAIL PROTECTED]> wrote: > > The following program outputs: > > > > in Parse, type='System.Int32' > > in Parse<T>, T='System.Object' > > > > Is this behavior intended and if yes, why ? I would expect a compile > error. > > > > > > > > using System; > > > > namespace ConsoleApplication1 > > { > > class Program > > { > > static void Main(string[] args) > > { > > object value; > > Parser.TryParse(typeof(int), "1", out value); > > > > Console.ReadLine(); > > } > > } > > > > class Parser > > { > > public static bool TryParse<T>(string input, out T value) > > { > > Console.WriteLine("in Parse<T>, T='{0}'", typeof(T)); > > > > value = default(T); > > return true; > > } > > > > public static bool TryParse(Type type, string input, out object value) > > { > > Console.WriteLine("in Parse, type='{0}'", type); > > > > return TryParse(input, out value); > > } > > } > > } > > > > -- > > Sébastien > > www.sebastienlorion.com > > > > > =================================== > > This list is hosted by DevelopMentor(R) http://www.develop.com > > > > View archives and manage your subscription(s) at > http://discuss.develop.com > > > > > > > -- > Studying for the Turing test > > =================================== > This list is hosted by DevelopMentor(R) http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com > -- Sébastien www.sebastienlorion.com =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com