15
In C# 4.0 / Visual Studio 2010 with the Code Contracts add-on installed you can use Contract.Invariant in a ContractInvariantMethod attribute to check that a value is not modified during a method call.
Not quite the same thing but about as close as you'll get I think.
As others stated, there's no such thing in C#.
If your intention is to forbid the called method to change your object (or know for sure it does not), your only option is to pass a deep clone of your object. - Not very elegant, but the only way possible to be sure.