Anything that is not a "value type" that essentially enumerates, Boolean, and built-in numeric types will be passed "by reference", which is probably the same as a C / C ++ mechanism for passing by reference or a pointer. Syntactically and semantically, it is essentially identical to C / C ++ following a link.
Note, however, that C # strings are immutable, so although it is passed by reference, you cannot edit a string without creating a new one.
Also note that you cannot pass an argument as "const" in C #, whether it is a value type or a reference type.
source share