[解決済み] クラス内の項目の並び順。フィールド、プロパティ、コンストラクター、メソッド
2022-03-14 04:36:58
質問
クラス構造から見た項目の順序について、C#の公式ガイドラインはありますか?
行くのでしょうか。
- 公開フィールド
- プライベートフィールド
- プロパティ
- コンストラクタ
-
メソッド
?
アイテムの順番について、確固たるルールがあるのかどうか、気になります。なんだか、あちこちでやっています。どこでもできるように、特定の基準にこだわりたいんです。
本当の問題は、より複雑なプロパティがメソッドのように見えてしまい、コンストラクタの前の一番上にあるのが場違いな気がすることです。
何かヒントや提案があれば教えてください。
解決方法は?
によると スタイルコップ ルール ドキュメント の場合、順序は以下のようになります。
クラス、構造体、またはインターフェイス内。(SA1201、SA1203)
- 定数フィールド
- フィールド
- コンストラクタ
- ファイナライザー(デストラクター)
- デリゲート
- イベント
- 列挙型
- インターフェイス ( インターフェース実装 )
- プロパティ
- インデクサ
- メソッド
- 構造体
- クラス
それぞれのグループ内で、アクセス順に並べます。(SA1202)
- 公開
- 内部
- プロテクトされた内部
- プロテクト
- プライベート
各アクセスグループ内では、静的、非静的の順に並べる。(SA1204)
- スタティック
- 非静的
静的/非静的フィールドの各グループ内で、読み取り専用、読み取り不可の順に並べる : (SA1214 と SA1215)
- 読み取り専用
- 非読取専用
展開したリストは130行になるので、ここでは展開しない。メソッド部分を展開したものは
- パブリックスタティックメソッド
- パブリックメソッド
- 内部静的メソッド
- 内部メソッド
- protected 内部静的メソッド
- プロテクトされた内部メソッド
- プロテクトされた静的メソッド
- プロテクトされたメソッド
- プライベートスタティックメソッド
- プライベートメソッド
例えば、複数のインターフェースが実装されており、インターフェースのメソッドやプロパティがグループ化されている場合、関連するメソッドやプロパティをグループ化するためにパーシャルクラスを使用する、とドキュメントに記載されています。
関連
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] パブリックフィールドとオートマチックプロパティ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する