I have a script that manages different types of tiles, all info of a tile is grouped together in a struct "TileInfo".
Now I have a method:
public static TileInfo GetTileInfo(int id)
//Looks up the TileInfo var with ID == id and returns the correct struct
Now my question, will this return a copy of that struct, or the actual struct itself ? So when I use this method, and change the returned struct, will the original change ? If so, how do I return a copy so my original struct stays the way he was ? If not, just out of curiosity, how do I make it so it returns the actual struct ? :P (I need it to return a copy, but it's still interesting :P)
(I'm not sure if I'm saying it right "returning the actual struct", or is there a word for an instance of that struct (like "object" when we're talking about classes) or is it also just called an "object" ? :D)
You want to return an object reference on constructor call?
Answer by Chewbacca
Apr 08, 2011 at 01:31 PM
structs are value types. As such the function will return a copy of that struct and NOT the actual struct itself.
See http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx for more info.
Thanks ! Perfect answer :P
Answer by Dani
Apr 08, 2011 at 01:45 PM
Structs are always copied, classes are always referenced
Thanks :D Pity for you Chewbacca was first, and apparently I can only select one answer as the correct one :(
Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.
The best place to ask and answer questions about development with Unity.
To help users navigate the site we have posted a user guide.
If you are a new user, check out our FAQ for more information.
If you are a moderator, see our Moderator Guidelines page.
We are making improvements to UA, see the list of changes.
For troubleshooting common problems with Unity 5.x Editor (including Win 10).
Answers and Comments
No one has followed this question yet.
Making an item class in Unity.
Get GameObject transform inside a custom class
All Arrayinstances get changed
new Monobehaviour as variable returns warning...
Extending a class