In a sense Java and C# are quite similar, but when you get a bit under the tip you will notice some of the difference between both languages. For some reason C# felt a bit more easier the Java to me, and a bit (a lot) more powerful.
There are times when you need some sort of unique identifier for some reason, and it can be hard to find a system that will have a very low collision risk.