Programming languages have value types and reference types. The latter doesn't pass the value, only a reference to where the value is located. (Like a pointer in C/C++). So the answer is "value type". If the size of the value type is small, there is no performance overhead. But bigger data types (e.g., a string) would suffer from having to be copied all the time, so they are typically passed by reference.