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

Reply via email to