There now appears to be the
in parameter modifier that exhibits this behaviour (in essence, a
ref readonly). A brief search on when you would ever use this yields the following answer:
If you don’t want anyone to alter the “reference”, or perhaps you mean the content of the object, make sure the class doesn’t expose any public setters or methods of mutating the class. If you cannot change the class, have it implement an interface that only publicly exposes the members in a read-only fashion and pass the interface reference instead.
If you mean you want to stop the method from changing the reference, then by default if you pass it “by reference”, you are actually passing the reference by value. Any attempt from the method to change what the reference points to will only affect the local method copy, not the caller’s copy. This can be changed by using the
ref keyword on a reference type, at which point the method can point the reference at a new underlying object and it will affect the caller.