Order of items in classes: Fields, Properties, Constructors, Methods

Is there an official C# guideline for the order of items in terms of class structure?

Does it go:

  • Public Fields
  • Private Fields
  • Properties
  • Constructors
  • Methods
    ?
  • 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?


    According to the StyleCop Rules Documentation the ordering is as follows.

    Within a class, struct or interface: (SA1201 and SA1203)

  • Constant Fields
  • Fields
  • Constructors
  • Finalizers (Destructors)
  • Delegates
  • Events
  • Enums
  • Interfaces
  • Properties
  • Indexers
  • Methods
  • Structs
  • Classes
  • Within each of these groups order by access: (SA1202)

  • public
  • internal
  • protected internal
  • protected
  • private
  • Within each of the access groups, order by static, then non-static: (SA1204)

  • static
  • non-static
  • Within each of the static/non-static groups of fields, order by readonly, then non-readonly : (SA1214 and SA1215)

  • readonly
  • non-readonly
  • An unrolled list is 130 lines long, so I won't unroll it here. The methods part unrolled is:

  • public static methods
  • public methods
  • internal static methods
  • internal methods
  • protected internal static methods
  • protected internal methods
  • protected static methods
  • protected methods
  • private static methods
  • private methods
  • 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.


    通过可视性或项目类型(字段,属性,方法等)进行分组,而不是按功能进行分组?


    I would recommend using the coding standards from IDesign or the ones listed on Brad Abram's website. Those are the best two that I have found.

    Brad would say...

    Classes member should be alphabetized, and grouped into sections (Fields, Constructors, Properties, Events, Methods, Private interface implementations, Nested types)

    链接地址: http://www.djcxy.com/p/18402.html

    上一篇: 我如何找到调用当前方法的方法?

    下一篇: 类中项目的顺序:字段,属性,构造函数,方法