I want to start developing in XNA. As of now, I do not know C#, but I would consider myself "good" at Java. I have looked at some C# code and it looks almost identical to Java. After looking at Java and C# Comparison, it looks like they are basically the same. Obviously some function names are going to be different, but I think I can handle it. Now if I want to learn game development in XNA, do I really need to "learn" and master C#, or can I just jump right in and learn along the way? I should also mention, I also know PHP which looks very similar.
You don't need to master any language before jumping right in an making something. Jump right in and learn on the way. It's likely your best option for learning the relevant parts of the language anyway.
C# and Java are not "basically the same". A lot of basics are just similar, and it's not a coincidence: C# was influenced by Java and they were both influenced by C++.
Whilst this means you'd already recognise a lot of stuff, it doesn't mean you suddenly know C#.
So can you use C# right now without trying to learn it?
Yes, you can use C#, but you'd be using C# like you'd use Java, which would be pretty poor use of the language and would be making things hard for yourself. For instance, earlier I mentioned getters and setters. Let me give you an example of why you should actually learn C# and not presume you already know it:
I'm sure you're glad you know that one now.
So SHOULD you learn C# before using it?
Yes. Right now, there are a lot of concepts offered by C# (and not Java) you are probably unaware of which you should be using; properties are one example. You don't need to master the language before you begin programming in it, but you should definitely look through some tutorials to get an overview of the language and to be introduced to those features.
Since those features are ones you don't know about, you can't actually just research them on the fly. You don't know about them, so you can't research them! So by all means, research them later to get a better understanding, but at least make sure you're aware of them now.
It will make your life easier using C#.
If you know Java real good(understand how to use it, understand your basic data structures), and know how to solve problems(programming/software engineering). You should have no problem picking up C#. The language is only a tool.
If you know core java language , C# seems to be easier and you can learn it more fast Lets look in to the detail
C# and Java are actually quite similar, from an application developer's perspective.
C#keywords Java keywords
in java a sample hello world program
in C# it look like
In a mere look both are similar , so i prefer you to learn C#
I am doing just this in my current job. Previously, I was doing J2ME and Android development. I am now in an environment where C# is used for Windows desktop development with a bit of Office interop. I have no experience with XNA specifically.
You should be able to dive in and get productive quite quickly. The similarities in the languages meant that my early java-like code didn't incur performance hits (like it might have in Python for example).
C# does have some fabulous new developments such as Properties, Delegates, and LINQ. I have found it easy to pick these up on the fly. It may have helped that I was already a bit cranky about java's callbacks and getter/setter situation beforehand.
Overall, I'd say that learning my way around Microsoft's extensive libraries/apis is a much larger job than picking up the language. You might as well get started coding.