I think you also have to remember what C# is lacking compared to C++. If you wan't to do a real game engine a big part of it is that system layer with memory management and the likes. There you need direct memory manipulation.
I think it might work for a game engine for small and fun games but you lose a lot of performance next to C++ engines I guess
Yeah. For number crunching, C# is still a bit slower than C++ for various reasons (I really hope to get SIMD-support in the MS CLR) and there's always going to be some overhead when calling the native DirectX API from managed code. However, almost all current "real" games I play are GPU-bound (on my system), so the CPU-overhead isn't really noticeable in a lot of cases.
If you primarily want to create an engine, I would suggest going with SlimDX or, if you're really concerned about performance, SharpDX, because they are closer to native DirectX and offer more freedom. If you want to create a game though, I have to say that XNA is probably "good enough" for the majority of projects while offering some nice abstractions and tools.