クラス内のメンバー並び順

クラス内のメンバーの並びは仕様上は前後を問いません
しかし、クラスごとにバラバラなのは気持ちが悪いですね

これしかないわけではありませんが、参考にしてください

メンバー並び順のルール(参考)

クラス、構造体、インターフェース内の順番

  1. 定数フィールド
  2. フィールド
  3. コンストラクタ
  4. デストラクタ(ファイナライザ )
  5. デリゲート
  6. イベント
  7. 列挙型
  8. インターフェース (インターフェースの実装)
  9. プロパティ
  10. インデクサー
  11. メソッド

アクセス修飾子の順番

  1. public
  2. internal
  3. protected internal
  4. protected
  5. private

各アクセスの項目内のstatic, 非staticで分ける

  1. static
  2. 非static

実際のルールに則ったコード

using System;

namespace MyNamespace
{
    public class TestClass
    {
        // 定数フィールド
        const string API = "ABC";

        //フィールド
        private int PrivateField;
        private string[] data = new string[10];

        //コンストラクタ
        public TestClass(int val)
        {
            PrivateField = val;
        }

        // デストラクタ(ファイナライザ)
        ~TestClass() { }

        // デリゲート
        public delegate void Delegate(int a);

        // イベント
        public event Action Changed;

        //列挙型
        public enum PublicEnum
        {
            One,
            Two,
        }

        // インターフェースの実装
        public void InterfaceJssou()
        {
        }

        //プロパティ
        public int PublicProperty
        {
            get
            {
                return PrivateField;
            }
        }

        // インデクサ
        public string this[int index]
        {
            get
            {
                // インデックスが有効であるか確認
                if (index >= 0 && index < data.Length)
                {
                    return data[index];
                }
                else
                {
                    throw new IndexOutOfRangeException("Invalid index");
                }
            }
            set
            {
                // インデックスが有効であるか確認
                if (index >= 0 && index < data.Length)
                {
                    data[index] = value;
                }
                else
                {
                    throw new IndexOutOfRangeException("Invalid index");
                }
            }
        }

        // メソッド
        public string PublicMethod(string str)
        {
            str = "PublicMethodが呼び出されました。" + str;
            return str;
        }
        public string PublicMethod()
        {
            return PublicMethod("");
        }
    }
}

C#

Posted by hidepon