table.Rows[ i ]["Value"] is of the type object so I must pass it that way. The compiler allows assigning a string to object, this seems logical since String is inherited from Object.

Your reasoning would imply that it is impossible to pass a cell and modify it, I can hardly believe that. I still feel like I'm missing something.