秩序类项目:字段,属性,构造函数,方法字段、函数、秩序、属性

2023-09-02 10:19:45 作者:原来你也爱她

是否有项目的顺序在课堂结构方面一个C#官方指导?

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

是否去:

在公共领域 在私人领域 属性 构造 方法 ? 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.

任何提示/建议?

推荐答案

按照了StyleCop规则文档的顺序如下所示。

在一个类,结构或接口:(SA1201和SA1203)

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

恒田 字段 构造 终结(析构函数) 代表 活动 枚举 接口 属性 索引器 方法 结构体 类 Constant Fields Fields Constructors Finalizers (Destructors) Delegates Events Enums Interfaces Properties Indexers Methods Structs Classes

在每个组的顺序按访问:(SA1202)

Within each of these groups order by access: (SA1202)

公开 内部 在受保护的内部 保护 私人

在每一个访问组,以通过静态的,那么非静态的:(SA1204)

Within each of the access groups, order by static, then non-static: (SA1204)

静态 在非静态

在每一个静止/非静态组字段,为了通过只读的,那么非只读:(SA1214和SA1215)

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

在只读 非只读

这是展开的列表是130线长,所以我不会解开它在这里。该方法的一部分展开的:

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

在公共静态方法 public方法 在内部静态方法 内部方法 在受保护的内部静态方法 在受保护的内部方法 在受保护的静态方法 在受保护的方法 私有静态方法 私有方法 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

文档注意到,如果prescribed顺序不适合---比如,多个接口正在执行,以及接口的方法和属性应该组合---然后使用局部类来组相关的方法和属性一起

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.