Хотя ответы, указывающие на то, что «эта» ссылка, по существу, передана в качестве магического «скрытого параметра» для вызова, по существу правильны, полная история на самом деле довольно сложна в C#, чем можно было бы подумать Первый взгляд.
Ссылочные типы просты; ссылочный объект проверяется на нуль, а затем концептуально передается как неназванный, непеременный параметр под названием «this». История сложна по типам значений.
Помните, что типы значений по определению передаются по значению, т.е. передаются путем создания копии данных. Отсюда их имя. Но явно изменяемые типы значений, которые являются чистым злом, и их следует избегать, не могут быть переданы по значению как «это», потому что, если вы вызвали мутатор, «это» в методе мутатора будет мутировать копию, а не оригинал!
Поэтому в вызове метода типа значения, в «этом» не значения приемника, это псевдоним переменного, представляющее место хранения приемника. Мы реализуем это, передавая «это» как управляемый адрес приемника, а не значение получателя.
Теперь мы можем поднять еще одну трудность. Что делать, если переменная, сохраняющая измененное значение, является переменной только для чтения? Теперь, что мы делаем? Если вам интересно, читайте мою статью на эту тему и посмотреть, если вы можете правильно ответить на загадку представлены:
http://blogs.msdn.com/ericlippert/archive/2008/05/14/mutating-readonly-structs.aspx
Почему вики на это? – Joseph
«Система» Вы имеете в виду компилятор Java? Компилятор C#? –
@Joseph мы можем вернуть его обратно в не-wiki? – Sandbox