読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Visual Studioでusingとかいう名前空間を自動補完するコマンド

<スポンサーリンク>

勉強したことのメモを淡々と記す。

■C#が実行される仕組み
・C#で書かれたプログラムは、C#コンパイラでMSIL(Microsoft Intermediate Language)と呼ばれる中間コードにコンパイルされる。

・中間コードの仕様や実行ファイルの形式などは、CLI(Common Language Infrastructure)で細かく規定されている。

・CLIのWindowsへの実装がCLR(Common Language Runtime)である。


以下の様なイメージ。

ソースコード→(コンパイラ)→MSIL→(CLRが翻訳)→ネイティブコード→実行


■Visual Studioで名前空間を自動補完するコマンドは以下のとおり。
・[Shift]+[Alt]+[F10]

■デストラクタ
不要になったオブジェクトが占めているメモリ療育を自動的に解放することをガーベジコレクションという。
ガーベジコレクションによってメモリが解放される直前にデストラクタと呼ばれるメソッドが自動的に実行される。
これはオブジェクトが消える直前に何か後片付け処理をしたいときに便利だ。
また、.NET Framework管理外のリソース(アンマネージリソース)を確実に解放するためにも、デストラクタは使われる。

デストラクタの構文は以下のように書く。

~クラス名() {
	//デストラクタのコード
}

ちょっとしたサンプルを作ってみる。

using System.Windows.Forms;
using System;
class basicform
{
    public static void Main()
    {
        //Application.Run(new Form { Text = "猫でもわかるGUI" });
        Person takeshi = new Person("takeshi", 19);
        Console.WriteLine(takeshi.getName());
        Console.WriteLine(takeshi.getAge());
    }

}

class Person
{
    public string name;
    public int age;

    ~Person()
    {
        Console.WriteLine("デストラクタ・・・");
    }

    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    public string getName()
    {
        return this.name;
    }

    public int getAge()
    {
        return this.age;
    }


}

実行すると結果は以下のようになり、たしかにデストラクタはオブジェクトが消える直前に実行されている。

takeshi
19
デストラクタ・・・