Both C# and Java treat arrays as objects; arrays are allocated on the heap. In C# all arrays are of the type System.Array class. Like the java.util.Arrays class, the System.Array class has several static utility methods for manipulating arrays. C# arrays can be jagged, rectangular, one-dimensional, or multidimensional. In C#, arrays are also collections and implement the IList and ICollection interfaces.