C#7 features
Simen Kjaeraas via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Mon May 9 02:58:51 PDT 2016
On Monday, 9 May 2016 at 00:44:09 UTC, Peter Häggman wrote:
> Their tuples seem to be a complete DIY:
>
> https://msdn.microsoft.com/en-us/library/system.tuple(v=vs.110).aspx
>
> I wouldn't be surpised to see in the implementation an array of
> variant or something like that, explaining why it's limited to
> octuples [1]. Sharp tuples look weak compared to D tuple-ish
> things: Tuple, TList, AliasSeq, variadics, ...
>
> [1] Also I think that the param-"variadicity" is simply
> emulated via a set of overloaded constructor, explaining why
> they stop at 8.
C#'s tuples are actually 8 different templated classes - one for
each arity. There's a lot of duplicated code to make that work.
Wait, it's actually 9 classes - in addition to Tuple<T1> through
Tuple<T1, ..., T8> there's the humble Tuple - a non-generic class
that cannot be instantiated and only exists to be a namespace for
the Tuple.Create function. The example code on gooroo seems to
have eaten the template arguments for the constructor example -
to instantiate a tuple you use one of these syntaxen:
var t1 = new Tuple<int, string>(1, "foo");
var t2 = Tuple.Create(2, "bar");
The 'templates' in C# are (much) more limited than old C++
templates, and have nothing on D's templates. That's not
necessarily a bad thing, though - the language is different and
fills a different niche. It does mean some things that are very
elegant in D end up very inelegant in C#, though.
More information about the Digitalmars-d-announce
mailing list