I was considering learning C# for game development. However, I recently learned that XNA is dead. Is C# still good to learn for game development? Can anyone suggest a better language and library for game development?

Sure why not? Many people consider it a very good language, for games and for things that aren't games. So whatever you learn with it, it should be easily transferable to other kinds of applications.

XNA isn't certainly the only thing going in C#, you can look around what other frameworks/engines are being worked on in C#, there are lots of it (without going to far, you'll find MonoGame, a XNA-like framework running on top of Mono).

XNA was not the only option for doing graphics programming in C#. SharpDX is currently the prevailing Direct3D wrapper (MonoGame uses it under the hood, as well as one of the openGL wrappers). For OpenGL there's OpenTK, although I don't know if that's been keeping current. There's also SharpGL, but I can't comment much beyond knowing it exists.

Or if you're crazy enough, just write your own wrapper to call into OpenGL or Direct3D with P/Invoke or C++/CLI. Although I would just recommend SharpDX, if you were interested in XNA (MonoGame if you want an API like XNA). However, don't go and assume that C# was relevant only because of XNA, because XNA is just one library. It's a very good language to know and use, whether it's a game you want to develop or something else.

I was considering learning C# for game development. However, I recently learned that XNA is dead. Is C# still good to learn for game development? Can anyone suggest a better language and library for game development?

Why are you learning?

C# is in very active use in game development. Tools use it extensively. Many engines rely on it, right now Unity is the most extreme for that, but it certainly isn't the only one. Sims 3 was especially notable as C# was the scripting language, and since everything in the game is controlled by script about 2/3 of the game was C#.

The popular cry "XNA is dead" has always made me roll my eyes. XNA always was a wrapper for a subset of DX9 technology. The technology had ceased evolving before XNA, but it had been slightly modified on several devices. That was the entire reason it was created. You could recompile XNA applications on different platforms that made use of the common subset. You could use some tools and functionality, and they were pretty neat.

The tools themselves are very approachable, they still work, and they will continue to work for probably the next five or even ten years. If they work for your needs that is good enough. If you want a feature set that is always in flux (ewww) you can get MonoGame. They have copied all the XNA functionality and continue to add new stuff.

But back on topic, why are you learning? What is your criteria for it being 'worth it' to you?

When it comes to learning, most successful people don't ask about the minimum they need to learn, or ask if they can get away without learning something. They figure out that they want to learn something for a reason, and then learn it if the reason is compelling enough. There are many great reasons to learn C#, but unless it is YOUR reason it doesn't matter.

You may look at your reasons for learning it and decide C# is the thing you want to tackle next. Or maybe Java. Or maybe Python. Or maybe shell scripting. Or maybe JavaScript and HTML5. Or maybe JQuery, or PHP, or JSP, or ASP, or SQL, or Boo, or 6502 assembler, or linear algebra, or number theory, or discrete mathematics, or cryptography, or any of thousands of other topics that might possibly interest you.

Nobody is more qualified to determine if something is worth it to you than you.

XNA was not the only option for doing graphics programming in C#. SharpDX is currently the prevailing Direct3D wrapper (MonoGame uses it under the hood, as well as one of the openGL wrappers). For OpenGL there's OpenTK, although I don't know if that's been keeping current. There's also SharpGL, but I can't comment much beyond knowing it exists.[/quote]

OpenTK is very much alive, it just had a new release that added OpenGL 4.4 and a SDL2 backend.

Keep in mind that a game is not only the playing executable itself, but also the set of tools used to make it. Editors of any type (for levels, maps, assets manager, scripts) are often made in some enterprise-productive language like C#.

C# is an excellent language for game development, and it seems even Microsoft is promoting the open source XNA replacement MonoGame. C# is one of not-too-many languages you can use on (most) current platforms. Another nice thing about C# is that you can use it for not only the game development itself, but tools/applications and the web as well.

XNA was not the only option for doing graphics programming in C#. SharpDX is currently the prevailing Direct3D wrapper (MonoGame uses it under the hood, as well as one of the openGL wrappers). For OpenGL there's OpenTK, although I don't know if that's been keeping current. There's also SharpGL, but I can't comment much beyond knowing it exists.[/quote]

OpenTK is very much alive, it just had a new release that added OpenGL 4.4 and a SDL2 backend.

Good to know. I see you guys pushed out OpenTK 1.1 officially just yesterday, what timing