I have done that same question a lot of times. Just some facts to help you decide by yourself:
.NET (C# included) is not interpreted. In an assembly it is stored in intermediate language. When required the IL is compiled into native code. You can optimize an assembly to a given CPU... the compilation is then made on compile time. So the first time you use a class you get a performance penalty. In games I don't see a point here because games always take quite a while to load

. One more second won't hurt.
C++ is faster. I read an article about a quake port to managed c++ and the decrease of performance was about 10%. But to be able to compare it it is necessary to check why. .NET arrays are always checked for boundaries. .NET manages its own memory by using Garbish Collection. .NET always checks the stack for overflows... and so one... Now if you use Smart Pointers, Garbish Collection, Safe Arrays and other C++ implementations of the very same features how faster is C++? I have never seen an article on this but I would say the 10% will get shorter and shorter.
.NET has a very complete development framework. I have never seen a class library as complete and easy to use as the .net framework and also as consistent. Do you know the design team gets together just to discuss the method and class names

?
.NET has better debugging, better auto completion and compiles faster.
When using a C++ library (you can think of irrlicht engine) in .NET you get a performance penalty because types have to be marshaled back and forward in order to connect both worlds.
To finalize some ideas:
- If you can load your scene graphs in native code and maintain your game logic in managed code you will probably get a balanced solution.
- For smaller projects you will like the C# compile times.
- Try to understand how .net calls C++ native APIs so that you can have a clear idea of the performance impact of calling an API with Interop. With this in mind you can better decide what to do in a managed world and in a native world.
And good luck...