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