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