Thanks Eric. I just read that in the new spec (which looks great btw). It's great to see Microsoft add bold features like generics and especially iterators.
^Tum > -----Original Message----- > From: Moderated discussion of advanced .NET topics. [mailto:ADVANCED- > [EMAIL PROTECTED] On Behalf Of Eric Gunnerson > Sent: Saturday, 25 October 2003 3:44 a.m. > To: [EMAIL PROTECTED] > Subject: Re: [ADVANCED-DOTNET] C# generics constraints syntax > > I should probably note at this point that "where" is a contextual > keyword - the same as "get", "put", and "value". All the enhancements > we're doing in 2.0 use contextual keywords (though the PDC bits use > yield, which is non-contextual, and will change to "yield return" in the > final version). > > That means that we don't have to burn any identifiers, nor do we have to > munge your code on migration. > > -----Original Message----- > From: Moderated discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Daniel > O'Connell > Sent: Thursday, October 23, 2003 3:26 PM > 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 DevelopMentor(r) 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(r) 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
