Generics
In Java, generics only work on reference types. For example,
ArrayList<int> is invalid: you should use
ArrayList<Integer> instead.
C# has no such limitation: generics work with any type.
E.g., List<int> is perfectly valid. Consequently,
C# has no need for wrapper types such as Integer, Double or Boolean.