Suppose I have a big object that contains the properties I require and additionally several methods and a few sizeable collections.
I would like to know what would cost more: To pass as an argument this big object that already exists, or create a small object containing only the handful of properties I require and pass that?
If you’re just passing it as an argument to a method, passing the “big” object is “cheaper” – you’ll only be passing a copy of the object reference, which is just the size of a pointer (unless the object is of a struct type, in which case the whole “object” is copied into the stack). If you were to create a new object, even if it’s small, you’d be paying the price of the allocation and copying of the properties onto it, which you don’t have if you pass the “large” object.
If you’re passing it in a way that it needs to be serialized (i.e., across applications, in a call to a web service, etc.), then having the smaller object (essentially a DTO, Data Transfer Object) is preferred.