David Wilkinson wrote:
And there are things you can do with C# that you cannot do with C++/CLI,
because Microsoft has abandoned the attempt make C++/CLI a first class
.NET language.
If you go that way, there are many more things you cannot do with C# that
you can do with C++/CLI. Like writing C++. :-)
It fully depends on what you mean by "first class". As far as the managed
bits go, they all compile down to CIL, after all, and they can all access
each other's types. Nothing prevents you from writing some parts in one
language and others in another; the assemblies are interchangeable.
C#/VB.NET have recently diverged some more. Even though new features were
added, I've heard VB pundits complain that VB isn't being treated as first
class either, because of C# feature X or Y that they're missing. In these
discussions, I think we can save ourselves some trouble by defining
"first-class language" as "C#"...
C++/CLI is arguably burdened enough by its double heritage as it is. Do you
really want to see it loaded down with even more? Is anyone waiting for LINQ
in C++/CLI, for example?
C++/CLI is good enough for its purpose: bringing the managed and unmanaged
worlds together as painlessly as possible. Using it for new .NET projects is
not a particularly good idea, but then, it never was.
--
J.