libro
www.tuyano.com
初心者のためのC#プログラミング入門

コンストラクタ・静的クラス・抽象クラス・部分クラス (1/4)

作成:2013-08-17 10:39
更新:2013-08-17 10:39

■コンストラクタについて

クラスでは、いくつものフィールドなどが利用されます。クラスを使うときには、newでインスタンスを作成し、必要なフィールド類に初期値を設定し……といった作業をしていくことになります。が、これ、けっこう面倒くさいんですよね。特に、最初に値を設定しなければいけないフィールドが多数あったりすると、インスタンスの準備だけで何行も処理を書かないといけません。

こうしたときに役立つのが「コンストラクタ」です。コンストラクタは、インスタンス作成時に呼び出される特別なメソッドです。newでインスタンスを作成するとき、それに対応するコンストラクタが自動的に呼び出され、必要な初期化処理を行うことができます。このコンストラクタは以下のように定義します。
クラス名 ( 引数 )
{
    ……略……
}
コンストラクタは、「クラスと同名の返値のないメソッド」として定義されます。引数には、newする際に受け渡す値を指定します。これにより、「new ○○」としてインスタンスを作る際、必要な値を受け渡して初期化処理を行えるようになるわけです。

下のリスト欄に、簡単な例を挙げておきましょう。ここではPersonというクラスを定義し、そのコンストラクタを用意しています。コンストラクタは、
public Person(String name, int age)
こんな形で定義されていますね。引数にStringintの変数が用意されています。このPersonインスタンスを作成している部分を見てみると、こんな具合になっていることがわかります。
Person p = new Person("tuyano",123);
引数を指定してnewするだけで、nameageのフィールドが初期化されたインスタンスが作成できるというわけです。非常に便利ですね!


■デストラクタについて

この反対に、「インスタンスが破棄される際に呼び出される特別なメソッド」というのもあります。これは「デストラクタ」と呼ばれるもので、以下のように定義されます。
~クラス名 ()
{
    ……略……
}
コンストラクタと同様、クラスと同じ名前の返値のないメソッドとして定義しますが、よく見ると名前の前に「~」という記号がついています。これがつくと、デストラクタになります。デストラクタは、コンストラクタのように引数は指定できません。まぁ、デストラクタはあまり用いられない機能ですが、コンストラクタとセットで使い方ぐらいは覚えておくと良いでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

using System;

namespace myapp
{
    class Program
    {
        public static void Main(string[] args)
        {
            Person p = new Person("tuyano",123);
            p.print();
             Console.ReadKey(); // キーを押すまで待つ
        }
    }

    public class Person
    {
        public string name;
        public int age;
        
        public Person(String name, int age)
        {
            this.name = name;
            this.age = age;
        }
       
        public void print()
        {
            Console.WriteLine("my name is " + name + ". I'm " + age + " old.");
        }
    }
}
※関連コンテンツ

「初心者のためのC#プログラミング入門」に戻る