Is there an official C# guideline for the order of items in terms of class structure?
Does it go:
I'm curious if there is a hard and fast rule about the order of items? I'm kind of all over the place. I want to stick with a particular standard so I can do it everywhere.
The real problem is my more complex properties end up looking a lot like methods and they feel out of place at the top before the constructor.
Any tips/suggestions?
Within a class, struct, or interface, elements must be positioned in the following order: Fields. Constructors. Finalizers (Destructors)
A class is a data structure that may contain data members (constants and fields), function members (methods, properties, events, indexers, operators, instance constructors, finalizers, and static constructors), and nested types.
A constructor is a special method that is used to initialize objects. The advantage of a constructor, is that it is called when an object of a class is created.
7. Which of the following statements is correct about constructors in C#.NET? Explanation: Static constructor is a constructor which can be called before any object of class is created or any static method is invoked.
According to the StyleCop Rules Documentation the ordering is as follows.
Within a class, struct or interface: (SA1201 and SA1203)
Within each of these groups order by access: (SA1202)
Within each of the access groups, order by static, then non-static: (SA1204)
Within each of the static/non-static groups of fields, order by readonly, then non-readonly : (SA1214 and SA1215)
An unrolled list is 130 lines long, so I won't unroll it here. The methods part unrolled is:
The documentation notes that if the prescribed order isn't suitable - say, multiple interfaces are being implemented, and the interface methods and properties should be grouped together - then use a partial class to group the related methods and properties together.
Rather than grouping by visibility or by type of item (field, property, method, etc.), how about grouping by functionality?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With