Is C# an appropiate language to develop advanced games using XNA?
You can produce any game you want with XNA.
2D or 3D.
As for 'advanced' it depends what you mean. As far as performance goes the stuff you want to do should be possible in XNA - ignore the fact it is not used commerically as there have been some splendid examples of how powerful XNA is.
As for C# - I find personally find it to be my favourite language at the moment. Very clean and works nicely for game programming. XNA works a treat with it too as mentioned already.
Edit:
Yes, I have produce FPS style games and the likes with C#/XNA.
Tools
On a side note, XNA with C# is a great platform for implementing tools used in game production. Speed/Performance is less of a concern with a nice rapid environment with nice GUI being the main concern both of which XNA give you.
Yeah, its appropriate.
C# was probably the principle language the developers of XNA had in mind while creating the framework.
Yes. C# is the language that most of the XNA samples have been written in.
However, you can use any .NET language, and even mix them if you wish.
You can only use C# or VB.NET with XNA framework.
However, C# is the really only supported language for XNA. All of the documents, tutorials, samples, etc. are in C#. There's a small group of VB.NET XNA users, but typically, everyone that uses XNA uses C#.
Kinda depends on what you mean by 'advanced'. C# + XNA is kind of more for a more casual level of game development; serious, mass-market commercial games pretty much universally use C++. If you're asking this question in the first place, though, C# + XNA will probably be fine for nearly anything you'd have in mind.
Yeah, you should really define 'advanced'. XNA is awesome for game development as it's much more rapid dev than C++/DirectX. Plus it's 'portable' at least in theory.
Most big shops still use C++ for games, but I think that's mostly because of the skill pool available in C++. I see that changing in the next few years.
And don't be swayed by a lot of people's arguments about how XNA is only for tiny game concepts because of the managed code. Managed Code can actually be almost as fast as native is written properly, and especially in the case of games, most of the heavy lifting is done by the GPU, which is executing your HLSL code anyway. So you do have a very fine degree of control(if you need it) and should get comparable performance for low level shading tasks. I haven't actually done side-by-side comparisons of C# vs. C++, but I can do pretty awesome things graphically in C# and get really decent frame rates, so it's my language of choice.