In C++, returning a reference of an object allocated on the stack in a method, yields garbage values due to the fact, that the stack object is destroyed as soon the method leave
keyword struct in C# is allow to describe value type. When you return value type from method, it creates new copy of it.