As @Rex said, it depends on the semantics you want to convey.
GetInstance () does not necessarily imply a singleton instance. Thus, I would use GetInstance () in the case where an instance is created on demand, direct new is not desirable, and the instance can be, but is not guaranteed to be the same. Pools of objects also meet these criteria. (Actually, singleton is a stateful specialization of a pool of objects :-))
The Static Instance property, on the other hand, means a singleton and saved instance of an instance.
Btw, as @RaYell mentioned that your code sample is not single, so you should not use the instance property. You can still use the GetInstance () method in this case, since it will serve as an instance of the factory.
Franci penov
source share