Yes. There is a difference between a variable and the instance (of data) it stores. New
creates an instance in memory that you then normally assign to a variable. The instance stores the data (the fields) and members (properties and methods) provide calling code access to it. The values in the fields are persisted as long as the instance remains in memory.
To use the instance it must be assigned to a variable (or perhaps stored in a temporary expression by the compiler). Variables can be assigned to other variables or passed as arguments to methods. This is just causing other variables/parameters to be referencing the same instance in memory. Any of them can access the members and interact with the instance as they see fit.
So you can create your ProcessInfo
instance (via New
) and then assign it to a variable. You can pass that variable's value (the instance) to another type and, as long as the other type keeps a variable to it, then it has access to the original instance and its data.
I recommend you read up on reference variables for more information on how this works.