C# structure and class choice: When does the structure be used?
Introduction
Among the developers, the use of the structure has always been a controversial topic. There are different opinions on their appropriate application methods. This article aims to guide when the structure should be considered according to the best practice and practical examples.
Microsoft's suggestion
Instead of relying only on third -party resources, it is better to refer to Microsoft's official position on the use of structures, which can provide valuable insights:
For small, short or embedded objects, consider using the structure. -
Unless the following conditions are met, the structure is avoided:
-
represents the single value, similar to the type of the GM
Example size is less than 16 bytes
It is immutable -
minimum boxing demand -
-
- Microsoft's actual deviation
Interestingly, Microsoft's internal code sometimes violates these rules, which shows the flexibility and practical reasons for this. For example, uses internal structures to improve performance and meet the requirements of interface implementation.
Rules improvement
According to Microsoft's suggestions and inspections on actual usage, the following improvements have appeared:
Dictionary<TKey, TValue>
The structure of the structure for the value:
The structural body should indicate a logical unit with a single or limited value, similar to the type of element.
Consider performance:
Due to the type characteristics of the structure, it can improve performance and avoid expenses related to reference type.
- Avoid variability and boxing: The structure should usually be immutable, and it should not be boxed frequently to avoid decline in performance.
Use the interface carefully: - The structure of the implementation interface will become a reference type, and it may generate boxing overhead.
Actual Example: Dictionary implementation -
Class provides a explanatory example of structure usage:
- Internal structure and represent the single value.
They are used to optimize performance and avoid frequent boxing.
However, they violate the rules of indispensable and instance size to meet specific implementation requirements.
Dictionary<TKey, TValue>
Comparison with classes
In order to understand the performance differences between the structure and the class, please consider the following operations for the dictionary containing 300,000 meters: -
Entry
The performance of the use of the structure is obvious in terms of faster adjustment, which proves the efficiency of the value type. However, the reference type of the initialization structure will generate additional performance costs.
Conclusion
Whether the structure or class should depend on the specific requirements of the application. For value -oriented objects, the structure provides performance advantages and logical cohesion. Through the principles of discussions carefully and considering the actual impact, developers can effectively use the structure to enhance its C# code library.
The above is the detailed content of Structs vs. Classes in C#: When Should You Choose a Struct?. For more information, please follow other related articles on the PHP Chinese website!