Or go back to the topic of the language... where I consider Face the better expert on the matter.
Wow. While I actually consider myself an expert regarding .NET development, I'm certainly far away from being the better

. Thanks anyway.
As for the point of C#/.NET being superior or inferior to Java or managed development vs. C++ and such... I handle such discussions similar to Linux vs. Windows or VI vs. EMACS: I ignore them.
The reason for Orbiter.NET was just... interest. I'm a professional .NET-developer and I'm familiar with the tool-chain and the language itself. OTOH, I developed C++ application for approx. 6 years, too. Both object-oriented, of course. Both for command-line and UI. IMHO C# is much simpler to develop in than C++, especially if it comes to more complex applications. From my point of view, C# = C++ - pointer-pitfalls + huge component library. And therefore it was interesting for me to have a way to develop something for Orbiter in C#.
You don't have to use something like Orbiter.NET, though. OMP is a good example for it.
Something I wasn't aware of before I tried out .NET development for Orbiter - especially OMP - was the capability of .NET being truly platform-independent. This is something that is absolutely counter-intuitive if you consider .NET being a M$ child. But it is just true... I'm using Mono on the Linux side and .NET on the windows side with the exact same assembly binaries. Well, not the exact same set of assembly binaries (the system libraries coming with Mono and .NET are definitely different), but the application itself stays the same. Not only the source-code but the binary.
As for the performance... I can't really tell a difference between the ShuttlePB and the ShuttlePBdotNET in Orbiter, at least not in speed terms. On the memory side, it has its overhead due to launcher, wrapper and such.
The performance problems with managed systems are more of the psychological kind, I think. I can only tell you that you're much much more seduced to use more memory in C# than in C++, because it is so easy to say "myVar = new BigFatClassWithManyFunctions()", because you don't think about memory management anymore. But using a managed programming system doesn't free you from using your brain.It just frees you from using your brain for boring tasks.
my 2 cents,
Face
-----Post Added-----
Is .NET necessary to translate a .dll written in C#? I have a very limited understanding of programming, but I've always thought that there is no difference between a .dll compiled in C/C++ and C#.
The DLLs in .NET are called assemblies. They are completely different to the original DLLs.
.NET is necessary to run an assembly, not strictly to translate it. Translation is done via C#-compiler from C#-sourcecode to an assembly (more precise: to IntermediateLanguage - just like Java-bytecode). You can also use a VB-compiler to translate VB-sources to an assembly. There was a J# (as in Java) language, too, in the early versions of .NET, but I think they dropped that due to language extensions like generics (similar to C++ templates, but not the same).
The point is: you have to have a .NET framework installed to even run an assembly. Just like you have to have a JVM installed to run java applets.
regards,
Face