コンストラクタ | C#でExcelを読み込んで操作する方法を公開|C# Excel操作テクニック.NET

メソッドに貼り付けるだけで機能するソースコードを多数用意しています。

コンストラクタ

コンストラクタとデストラクタ

クラスを作成する」のページにも記載しましたが、クラスを操作する際にUsingの使用を可能にするため、作成するクラスにはコンストラクタとDisposeを実装します。

コンストラクタとデストラクタの概要についてはこちらに記述しました。使い分け方や各メソッドの意味など確認したい方は一読ください。


#region "コンストラクタとデストラクタ"

        /// <summary>
        /// コンストラクタ
        /// </summary>
        public ExcelManager()
        {
            xlApp = new Application();
        }

        /// <summary>
        /// 解放
        /// </summary>
        public void Dispose()
        {
            // ExcelManagerが使われなくなったときに破棄する資源
            ReleaseExcelComObject(EnumReleaseMode.App);

            // dispose判定フラグON
            isDispose = true;

            // Dispose()が明示的に呼ばれたときは、GCからFinalize()呼び出しをさせない。
            GC.SuppressFinalize(this);
        }

        /// <summary>
        /// デストラクタ
        /// </summary>
        ~ExcelManager()
        {
            // 呼出し側がDispose()してなかったらここでDispose
            if (isDispose == false)
            {
                Dispose();
            }
        }

#endregion

■ コンストラクタ(public [クラス名]())

public [クラス名]() { 処理 }  はコンストラクタといい、ほかのクラスでNew()を宣言したときに呼ばれる処理です。

コンストラクタの処理では、クラス変数で宣言したxlAppのインスタンスを生成します。

 

■ デストラクタ(~[クラス名]())

~[クラス名]() { 処理 } は、コンストラクタとは対象に、クラスが破棄されるときに実行される処理です。しかし、C#ではガベージコレクタが機能しているため、ほとんどのクラスで実装する必要はありません。

明示的に解放が必要なリソースや、.NET Frameworkで管理されていないアンマネージリソースを使用するときに実装することがあります。

 

■ Dispose

public void Dispose() { 処理 } は、クラスのインスタンスが破棄されるときに呼ばれる処理です。

デストラクタと混同してしまいがちですが、自動的に呼ばれる処理を記述するデストラクタに対して、Disposeは明示的に呼ぶ必要のある処理を記述します。

デストラクタはガベージコレクタが実行されたタイミングで呼ばれる処理のため実行されるタイミングが不明です。

通常はDisposeを実装して、ソースコード上では都度解放するようにしたほうが良いでしょう。

 

クラスの準備は以上で完了です。

あとはプロパティ・メソッドカテゴリーから、必要な処理を移植すれば、Excelの操作が可能になります。