I am programming a game using C#, thus, I am very concerned about performance.
I would like to know what are the main differences, and if possible, performance considera
Your delegate receives a reference type - a List
, so you're passing the entire list by reference anyway.
Passing a large structure by value is definitely most expensive than passing just the reference. When you have a large structure, it usually doesn't make sense to use it as a structure, just turn it into a class.
Anyway, are you sure you'll have a performance issue here? Seems like a very premature optimization.
I know that a class is always passed by reference and that a struct is passed by value, but I talking about passing the struct by reference here.
You probably have the right idea, but this is incorrect. Everything in C# is passed by value unless you use the ref
keyword.
Class instances are reference types, struct instances are value types.
When you pass a reference type by value, you pass a copy of the reference (small). When you pass a value type by value, you pass a copy of the whole data (potentially large).
Jon Skeet has a good explanation of all this here.