Чтобы добавить к ответу Джозефа, все, что он передает по значению, это создает новую переменную в стеке вызовов в кадре стека вызываемых методов и копирует адрес (в куче) объекта DataGridView в эту переменную для использования вызываемый метод. Все, что это делает, - это предотвращает назначение вызываемым методом адреса нового объекта DataGridView переменной в вызывающей стороне (вызывающий метод) и, таким образом, изменяет , что dataGridView звонящий будет указывать на.