I don't have much experience with C#, but I got the impression that C# can more easily dig closer to the metal. C# has pointers (enabled via the unsafe
keyword) and some notion of structs
. There's probably more stuff as well, but nothing I recall atm.
Other goodies in C# not found in java:
- reified generics
- implicit types for locally scoped variables (var i = "hello, I'm a string")
- operator overloading
Completely agree about pascal casing though, even if it's something one gets used to.
And don't forget those beautiful delegates and events! I love those...... but I still mostly dislike C#.
I highly recommend you learn C followed by C++. The experience and knowledge will be absolutely invaluable for your future, especially if you are interested in system-level development. I went through a similar path, starting by teaching myself Java, then doing C# in school, and now in college I'm learning assembly, C, and C++. I've realized how much I love low-level/system-level development and that's where I'm focusing my energy.