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

Reply via email to