Structures are usually needed in order to be able to perform a single operation, such as comparisons or assignments, on a group of data, including heterogeneous ones. I do not want to say that the structures need to be written off into the archive, it's just that many tasks that were solved and solved with the help of structures in other languages, in C #, full-fledged classes are more successfully solved.
In the source code of the System.Windows.Forms.Control class, you can look at the implementation of the Size property, as an example of how Microsoft uses structures.
The control has fields width and height . The Width and Height properties of the same name and the Size property, which returns the width and height values as a single structure of type System.Drawing.Size . For resizing, you have two whole paths: set the width and height separately through the corresponding properties, or set both sizes at once using the Size structure, for example, copied from another control.
If we consider the Location property, then we cannot find separate properties for X and Y, they simply do not exist, although inside the separate fields x and y are used to store the coordinates. In principle, it was possible to use the structure inside as well. point coordinates are rarely used separately.
In my opinion, this is a fairly good example of the practical application of structures with regard to their features.
Microsoft has less successful examples, for example, the Control.Font property, in which it seems rather strange, not to be able to specify, for example, the Bold font attribute without replacing the entire Font structure, but if you look closely at the source, you will notice that this property is related to unmanaged WinAPI code and, most likely, there wasn’t much choice, except for the “quickly gash new API” option, which is of course unrealistic in practice.
Use the available tools for their intended purpose (in different languages it may be different, this is normal).