0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C#の様々なクラスについて

Last updated at Posted at 2020-11-04

著者:桂素偉 翻訳者:欧Lily もし誤りがございましたらご指摘いただければ幸いです

 本記事は初心者向けの基礎的な知識です!!!

普通クラス 静的クラス 抽象クラス シールクラス 部分クラス
修飾子 static abstract sealed partial
コントラストが呼び出されるタイミング newキーワードでインスタンスを生成する際 任意の内部メンバーが呼ばれる際 派生クラス newキーワードでインスタンスを生成する際 newキーワードでインスタンスを生成する際 newキーワードでインスタンスを生成する際
メンバー フィールド、プロパティ、メソッド、イベント、インデクサ、演算子のオーバーロード、ユーザー定義型 静的フィード、 静的プロパティ、静的メソッド、静的イベント、ユーザー定義型 普通クラスの すべてのメンバー、抽象プロパティ、抽象メソッド 抽象イベント 抽象インデクサ 普通クラス すべての メンバー 普通クラス すべての メンバー
特徴 インスタンスを生成できる。継承できる クラス名.メンバー名でアクセスできる 派生クラスでインスタンス化 継承の禁止 クラスの分割定義
  
    /// <summary>
    /// 普通クラス
    /// </summary>
    public class CommonClass
    {
        /// <summary>
        /// ユーザー定義enum型
        /// </summary>

        enum MyEnum
        {
            enum1,
            enum2
        }
        /// <summary>
        /// ユーザー定義delegate型
        /// </summary>
        public delegate void MyDeleaget();
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public CommonClass()
        {
            _arr = new double[10];
        }
        /// <summary>
        /// フィールド
        /// </summary>
        private string _myField;
        /// <summary>
        /// プロパティ
        /// </summary>
        public string MyProperty { get; set; }
        /// <summary>
        /// メソッド
        /// </summary>
        public void MyMethod()
        { }
        /// <summary>
        /// イベント
        /// </summary>
        public event MyDeleaget MyEvent;
        /// <summary>
        /// 演算子オーバーロード
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static CommonClass operator +(CommonClass a, CommonClass b)
        {
            return new CommonClass() { MyProperty = a.MyProperty + b.MyProperty };
        }
        /// <summary>
        /// インデクサコレクション
        /// </summary>
        double[] _arr;
        /// <summary>
        /// インデクサ
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public double this[int index]
        {
            get
            {
                return _arr[index];
            }
            set
            {
                _arr[index] = value;
            }
        }
    }

    /// <summary>
    /// 静的クラス
    /// </summary>
    public static class StaticClass
    {
        /// <summary>
        /// 静的コンストラクタ
        /// </summary>
        static StaticClass()
        {
            Console.WriteLine("静的コンストラクタ");
        }
        /// <summary>
        /// 静的メソッド
        /// </summary>
        public static void StaticMethod()
        {
            Console.WriteLine("静的クラスの静的メソッド");
        }
        /// <summary>
        /// 静的プロパティ
        /// </summary>
        public static string StaticProperty { get; set; }

        /// <summary>
        /// ユーザー定義delegate型
        /// </summary>
        public delegate void MyDeleaget();

        /// <summary>
        /// フィールド
        /// </summary>
        private static string _myField;

        /// <summary>
        /// イベント
        /// </summary>
        public static event MyDeleaget MyEvent;
    }


    /// <summary>
    /// 抽象クラス
    /// </summary>
    public abstract class AbstractClass
    {
        public AbstractClass()
        {
            Console.WriteLine("抽象クラスのコンストラクタ");
        }
        /// <summary>
        /// ユーザー定義delegate型
        /// </summary>
        public delegate void MyDeleaget();

        /// <summary>
        /// プロパティ
        /// </summary>
        public string MyProperty { get; set; }
        /// <summary>
        /// メソッド
        /// </summary>
        public abstract void MyMethod();

        /// <summary>
        /// イベント
        /// </summary>
        public abstract event MyDeleaget MyEvent;


        /// <summary>
        /// インデクサ
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public abstract double this[int index] { get; set; }
    }

    /// <summary>
    /// シールクラス
    /// </summary>
    public sealed class SealedClass
    {
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public SealedClass()
        {
            Console.WriteLine("シールクラスコンストラクタ");
        }
        /// <summary>
        /// ユーザー定義delegate型
        /// </summary>
        public delegate void MyDeleaget();

        /// <summary>
        /// フィールド
        /// </summary>
        private string _myField;
        /// <summary>
        /// プロパティ
        /// </summary>
        public string MyProperty { get; set; }
        /// <summary>
        /// メソッド
        /// </summary>
        public void MyMethod()
        { }
        /// <summary>
        /// イベント
        /// </summary>
        public event MyDeleaget MyEvent;
        /// <summary>
        /// オペレーターのオーバーロード
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static SealedClass operator +(SealedClass a, SealedClass b)
        {
            return new SealedClass() { MyProperty = a.MyProperty + b.MyProperty };
        }
        /// <summary>
        /// インデクサコレクション
        /// </summary>
        double[] _arr;
        /// <summary>
        /// インデクサ
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public double this[int index]
        {
            get
            {
                return _arr[index];
            }
            set
            {
                _arr[index] = value;
            }
        }
    }

    /// <summary>
    /// 部分クラス1
    /// </summary>
    public partial class PartialClass
    {
        public PartialClass()
        {
            Console.WriteLine("部分クラスコンストラクタ");
        }

        /// <summary>
        /// ユーザー定義delegate型
        /// </summary>
        public delegate void MyDeleaget();

        /// <summary>
        /// フィールド
        /// </summary>
        private string _myField;
        /// <summary>
        /// プロパティ
        /// </summary>
        public string MyProperty { get; set; }
        /// <summary>
        /// メソッド
        /// </summary>
        public void MyMethod()
        { }

        /// <summary>
        /// オペレーターオーバーロード
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static PartialClass operator +(PartialClass a, PartialClass b)
        {
            return new PartialClass() { MyProperty = a.MyProperty + b.MyProperty };
        }
        /// <summary>
        /// インデクサコレクション
        /// </summary>
        double[] _arr;
    }

    /// <summary>
    /// 部分クラス1
    /// </summary>
    public partial class PartialClass
    {
        /// <summary>
        /// イベント
        /// </summary>
        public event MyDeleaget MyEvent;

        /// <summary>
        /// インデクサ
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public double this[int index]
        {
            get
            {
                return _arr[index];
            }
            set
            {
                _arr[index] = value;
            }
        }
    }

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?