It's actually quite simple, and different than the languages you note. Handle classes get passed by reference. Value classes pass by value. The difference from c/c++ is that mechanism is part of the type system, not an operation that can be performed on any variable.