2022年02月06日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 1266 count

コンストラクタとファイナライザとデストラクタ: 誕生、そして消滅のお知らせ

Written By: 川俣 晶連絡先

この章のテーマ §

 コンストラクタとファイナライザとデストラクタについて学びます。オブジェクトの生成と破棄の通知を受け取ることができます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, メソッドの基礎, new演算子

解説 §

 コンストラクタはオブジェクトが作成された時に呼び出される機能です。オブジェクトの初期化コードを書くことができます。

 コンストラクタはメソッドに似ていますが、戻り値の型がありません。new演算子から間接的に呼び出されて結果を返す方法が無いからです。しかし、引数はあります。new演算子の引数がそのまま渡されます。

 ファイナライザはオブジェクトの消滅を通知します。しかし、滅多に使用されません。オブジェクトはガベージコレクタで回収されますが、ガベージコレクタがいつ動作するか分からない上に、必ず回収が実行されるという保証もありません。サンプルソースでは、ファイナライザが実行されなかったことを確認してみて下さい。

 デストラクタはファイナライザの旧名です。

罠の数々 §

  • コンストラクタは必ず呼ばれると考えて良い。ただし、構造体の場合は呼ばれないこともある
  • ファイナライザを使うよりも、IDusposableインターフェースとusing文を使って確実な終了処理を行う方がお勧めである。いつ終了処理が走るのかが明確だからである

参考リンク §

コンストラクター (C# プログラミング ガイド)

ファイナライザー (C# プログラミング ガイド)

サンプルソース: Constructor §

var a = new MySample("サンプル実行");

class MySample

{

    public MySample(string message)

    {

        Console.WriteLine($"MySampleは生成されます。:{message}");

    }

    ~MySample()

    {

        Console.WriteLine("MySampleは破棄されます。");

    }

}

実行結果 §

MySampleは生成されます。:サンプル実行

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 以下のプログラムの実行結果を予測してみよう。

var a = new X(2);

Console.WriteLine(a.A);

class X

{

    public int A { get; set; } = 3;

    public X()

    {

        A = 1;

    }

    public X(int x)

    {

        A = x;

    }

}

  1. 1
  2. 2
  3. 3
  4. コンパイルエラー
  5. 実行時例外

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2022年
02月
07日
new_C#入門・全キーワード明快解説!・第1段階終了のお知らせ
3days 0 count
total 1144 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2022年
02月
05日
asyncキーワード/await演算子: さあ、非同期の迷宮に踏み込もう
3days 0 count
total 1038 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20220206134538
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.