I bet 10 people will disagree with what I'm about to say, but this is my opinion gathered from years of experience in the industry:
C was invented in the late 60s and early 1970s. C is used primarily in these days for low-level driver-level kind of stuff and embedded. There are a lot of legacy projects in C. C is cumbersome and requires a lot of effort to do very little, but it's efficient (or, rather, as efficient as the programmer makes it.) It's also available on a wide array of platforms from embedded MCUs to CPUs and the like.
C++ is also used for embedded (it has a flavor called literally "Embedded C++" and is also used by Arduino / Processing IDE for Marlin) ... But, C++ is also good for higher level stuff. By Bjarne's own words he claims C++ is a language for both the driver low-level and the application high-level, all in the same project. However, C++ is an old language and suffers from its evolution as much as anything that is > 30 years old. (the spec is over 1600 pages)
C++ also involves learning STL and/or Boost. This is similar to the way a Java developer learns the Java Library.
C# on the other hand is a fairly new approach and is a Microsoft language. It's used by newer tools (Unity, Xamarin, Windows Universal App Platform) and it is considered a truly dynamic language (whatever that means) .. it's an application-level language. It does a lot more under the hood that the previously mentioned.
There are also homegrown IDEs like Ecere http://ecere.org