Thanks for the explanation! There are a lot of reasons why Math.NET matrices are reference types, including the technical reason that the underlying arrays are always reference types in .Net. It is also what a .Net developer would expect.
This is very different from e.g. MATLAB, and indeed something that needs to be considered when porting code between the two (in addition to the zero-based indexing).
NB: If you need a copy of a vector or matrix, you can also use the