make that:
static void DoStuff(Type type, string input)
{
object value;
if (TryParse(input, out value))
{
// ...
}
}
On 4/11/08, Sébastien Lorion <sebastien.lorion gmail.com> wrote:
> 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 <gregoryyoung1 gmail.com> 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
> > <sebastien.lorion gmail.com> 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=''", typeof(T));
> > >
> > > value = default(T);
> > > return true;
> > > }
> > >
> > > public static bool TryParse(Type type,
string input, out object value)
> > > {
> > > Console.WriteLine("in Parse,
type=''", 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
>
--
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
|