Components are always structs, meaning they follow value-type semantics. If you are used to working with classes you might find this confusing.
One major point of difference is that value types are _copied_ rather that passed by reference by default.
You can read more about value types here: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-types
If you use them idiomatically, you don't have to worry about them creating garbage collection pressure, so this is a big win for performance when working in C#.