On further research(read the c# 2.0 spec doc up on msdn), it doesn't appear
that constructor constaints exist beyond a default constructor(new()) or how
to actually use that constraint(one would assume you don't have to use
reflection in this situation). However I find that to be a glaring omission
that only default constructors can be defined, any one have any comments as
to why?


----- Original Message -----
From: "Thong (Tum) Nguyen" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, October 23, 2003 5:51 PM
Subject: Re: [ADVANCED-DOTNET] C# generics constraints syntax


> You're probably right.  I'm just toying with alternatives to the "where"
> clause.
>
> One advantage of the where clause is that it actually looks quite nice if
> you place it on a separate line...
>
> public class TreeDictionary<K, V> : ICollection
>         where K : IComparable
>       where V : Object
>
>
> BTW, what does the "new()" do?
>
> ^Tum
>
> > -----Original Message-----
> > From: Moderated discussion of advanced .NET topics. [mailto:ADVANCED-
> > [EMAIL PROTECTED] On Behalf Of Daniel O'Connell
> > Sent: Friday, 24 October 2003 11:26 a.m.
> > To: [EMAIL PROTECTED]
> > Subject: Re: [ADVANCED-DOTNET] C# generics constraints syntax
> >
> > I think convoluting the syntax is a much worse choice than adding a new
> > keyword. Adding ontop of that the chances of error (<T: (Bar, Bax,
new(),
> > S>
> > which is incorrect and is an easy mistake to make). I don't know how
> > specific constructor constraints can get, but having a whole list of
them
> > would make it very easy to not realize you didn't close the matching (.
> > I find it much cleaner to do, assuming inheritance:
> >
> > public class Dictionary<T,S> : IEnumerable
> > where T : Bar, Bax, new()
> > where S : IComparable, new()
> >
> > compared to something like
> >
> > public class Dictionary<T : (Bar, Bax, new()), S : (IComparable, new())>
:
> > IEnumerable
> > or
> > public class Dictionary<T : Bar & Bax & new(), S : IComparable & new()>
:
> > IEnumerable
> >
> > (of the two, I prefer the latter actually)
> >
> > The C# syntax as it currently stands is simpler in my mind, probably
> > understandable to an extent for amateurs, its easy determine what
> > constraint
> > is on what member, and there are no paranthetical screwups that could
get
> > in
> > the way. It also makes figuring out what Dictionary derives from and
what
> > the constraints are, just by looking for the : and where keywords,
instead
> > of having to do a full fledged mind-parse.
> >
> > I am not a huge fan of the where clause, but I don't think the other
> > syntaxes suggested solve the biggest underlying problem, which basically
> > is
> > that generics make class declarations much larger, especially as the
> > argument list starts to grow. Imagine 7 or 8 type arguments with
> > constraints, unlikely as it may be, with ANY existing syntax...doesn't
> > look
> > pretty does it?
> >
> >
> > ----- Original Message -----
> > From: "Thong (Tum) Nguyen" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Thursday, October 23, 2003 4:46 AM
> > Subject: Re: [ADVANCED-DOTNET] C# generics constraints syntax
> >
> >
> > > I think something along the lines of
> > >
> > > <T : (Bar, Bax), S> would be a reasonable alternative to the "where"
> > clause.
> > >
> > > ^Tum
> > >
> > > > -----Original Message-----
> > > > From: Moderated discussion of advanced .NET topics.
[mailto:ADVANCED-
> > > > [EMAIL PROTECTED] On Behalf Of Dominic Cooney
> > > > Sent: Thursday, 23 October 2003 1:27 p.m.
> > > > To: [EMAIL PROTECTED]
> > > > Subject: Re: [ADVANCED-DOTNET] C# generics constraints syntax
> > > >
> > > > FWIW, the design of the Java language has gone in the other
direction;
> > the
> > > > syntax is: Foo<T extends Bar, U extends Baz>. I am not sure how
> > multiple
> > > > constraints are specified (T extends Bar & Baz, IIRC).
> > > >
> > > > What is VB.NET doing?
> > > >
> > > > Dominic Cooney
> > > >
> > > > -----Original Message-----
> > > > From: Moderated discussion of advanced .NET topics.
> > > > [mailto:[EMAIL PROTECTED] On Behalf Of Daniel
> > O'Connell
> > > > Sent: Thursday, 23 October 2003 9:05 AM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: Re: [ADVANCED-DOTNET] C# generics constraints syntax
> > > >
> > > > I'd say readability first, personally. It'd be alot easier to read
> > > >
> > > > public class Dictionary<KeyType,ValType> where KeyType :
IComparable,
> > > > ICollection, IAnotherThing, ValueType : IComparable,
IDictionaryValue,
> > > > IAnotherRestriction
> > > >
> > > > than
> > > > public class Dictionary<KeyType : IComparable, ICollection,
> > IAnotherThing,
> > > > ValueType : IComparable, IDictionaryValue, IAnotherRestriction>;
> > > >
> > > > Beyond that, I imagine parsing is easier this way. It would be tough
> > to
> > > > determine what the second type name is, should it be named
> > ICollection,
> > > > IAnotherThing, ValueType, etc?
> > > >
> > > > ----- Original Message -----
> > > > From: "Thong (Tum) Nguyen" <[EMAIL PROTECTED]>
> > > > To: <[EMAIL PROTECTED]>
> > > > Sent: Wednesday, October 22, 2003 5:50 PM
> > > > Subject: [ADVANCED-DOTNET] C# generics constraints syntax
> > > >
> > > >
> > > > > Hey folks,
> > > > >
> > > > > Can anyone think of a reason why the constraints syntax is this:
> > > > >
> > > > > public class Dictionary<KeyType, ValType> where KeyType :
> > IComparable
> > > > >
> > > > > rather than this:
> > > > >
> > > > > public class Dictionary<KeyType : IComparable, ValType>
> > > > >
> > > > > ?
> > > > >
> > > > > The former adds an additional (unreserved?) keyword to the
language
> > and
> > > > > locates two related things apart from each other (the generic
> > parameter
> > > > &
> > > > > its constraint).
> > > > >
> > > > > There's probably a good reason I've overlooked.
> > > > >
> > > > > All the best,
> > > > >
> > > > > ^Tum
> > > > >
> > > > > ===================================
> > > > > This list is hosted by DevelopMentorR  http://www.develop.com
> > > > > NEW! ASP.NET courses you may be interested in:
> > > > >
> > > > > 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> > > > > http://www.develop.com/courses/2daspdotnet
> > > > >
> > > > > Guerrilla ASP.NET, 13 Oct 2003, in Boston
> > > > > http://www.develop.com/courses/gaspdotnet
> > > > >
> > > > > View archives and manage your subscription(s) at
> > > > http://discuss.develop.com
> > > >
> > > > ===================================
> > > > This list is hosted by DevelopMentorR  http://www.develop.com
> > > > NEW! ASP.NET courses you may be interested in:
> > > >
> > > > 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> > > > http://www.develop.com/courses/2daspdotnet
> > > >
> > > > Guerrilla ASP.NET, 13 Oct 2003, in Boston
> > > > http://www.develop.com/courses/gaspdotnet
> > > >
> > > > View archives and manage your subscription(s) at
> > > > http://discuss.develop.com
> > > >
> > > > ===================================
> > > > This list is hosted by DevelopMentor.  http://www.develop.com
> > > > NEW! ASP.NET courses you may be interested in:
> > > >
> > > > 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> > > > http://www.develop.com/courses/2daspdotnet
> > > >
> > > > Guerrilla ASP.NET, 13 Oct 2003, in Boston
> > > > http://www.develop.com/courses/gaspdotnet
> > > >
> > > > View archives and manage your subscription(s) at
> > > > http://discuss.develop.com
> > >
> > > ===================================
> > > This list is hosted by DevelopMentorR  http://www.develop.com
> > > NEW! ASP.NET courses you may be interested in:
> > >
> > > 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> > > http://www.develop.com/courses/2daspdotnet
> > >
> > > Guerrilla ASP.NET, 13 Oct 2003, in Boston
> > > http://www.develop.com/courses/gaspdotnet
> > >
> > > View archives and manage your subscription(s) at
> > http://discuss.develop.com
> > >
> >
> > ===================================
> > This list is hosted by DevelopMentorR  http://www.develop.com
> > NEW! ASP.NET courses you may be interested in:
> >
> > 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> > http://www.develop.com/courses/2daspdotnet
> >
> > Guerrilla ASP.NET, 13 Oct 2003, in Boston
> > http://www.develop.com/courses/gaspdotnet
> >
> > View archives and manage your subscription(s) at
> > http://discuss.develop.com
>
> ===================================
> This list is hosted by DevelopMentorŪ  http://www.develop.com
> NEW! ASP.NET courses you may be interested in:
>
> 2 Days of ASP.NET, 29 Sept 2003, in Redmond
> http://www.develop.com/courses/2daspdotnet
>
> Guerrilla ASP.NET, 13 Oct 2003, in Boston
> http://www.develop.com/courses/gaspdotnet
>
> View archives and manage your subscription(s) at
http://discuss.develop.com

===================================
This list is hosted by DevelopMentorŪ  http://www.develop.com
NEW! ASP.NET courses you may be interested in:

2 Days of ASP.NET, 29 Sept 2003, in Redmond
http://www.develop.com/courses/2daspdotnet

Guerrilla ASP.NET, 13 Oct 2003, in Boston
http://www.develop.com/courses/gaspdotnet

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to