Note that we often write the components of rank (2,0) and (0,2) tensors as matrices (as for example when we write a metric) but this is a corruption of the proper notation. When we do so we are "kludging" a bit by invoking the transpose which is a highly basis dependent entity.
The best way to see the rank of a tensor is to contract with sufficient rank (0,1) and (1,0) vectors to get to a scalar. Under contraction the ranks of opposite type must cancel.
To get a scalar from a matrix you must multiply on the left by a row vector and on the right by a column vector.
If you have an object which maps 3 row vectors and two column vectors to a scalar then it is a rank (2,3) tensor since it cancels 2 rank (0,1) tensors and 3 rank (1,0) tensors whose product is then a rank (3,2) tensor. The (2,3) can cancel the (3,2) to yield a scalar.
The more proper statement is that matrices when used as linear operators are rank (1,1).
This is easiest to see and natural when you use index notation... (repeated indices in terms are summed over via Einstein's convention.)
MA = B with M a matrix operator and A and B column vectors:
In component form:
(\sum_j)M^i_j A^j = B^i
If we really wanted to write a metric (on the space of column vectors) properly we should write it as a row vector of row vectors (rank (2,0) tensor).
g = ((2,0),(0,3))
A metric applied to one vector gives its "geometric transpose" or "orthogonal dual" (I'm sure there's a more proper name for this but it escapes me at the moment.):
g(X) = g\left(\begin{array}{c}x_1\\ x_2\end{array}\right)=( (2,0)\, , \, (0,3) )\left(\begin{array}{c}x_1\\ x_2\end{array}\right)= (2,0)x_1 + (0,3)x_2
= (2 x_1,3 x_2)
g has mapped a column vector to a row vector. Applying to two column vectors gives their dot product under that metric:
g(X,Y) = (gX)Y = (2x_1, 3 x_2)\left(\begin{array}{c}y_1\\ y_2\end{array}\right)=2x_1 y_1 + 3 x_2 y_2
Similarly a dual metric (rank (0,2)) would be written as a column vector of column vectors. I'll skip typesetting as it takes up too much space.
Typically we try to work in an ortho-normal basis (and as long as we're working with a Euclidean space) the metric will then in matrix form look like the identity matrix. In an ortho-normal basis then the matrix transpose will correspond to the "orthogonal dual".