2009年12月9日水曜日

ExtendSampleClassでメソッドを定義しSampleクラスを拡張してみる。
using System;

// クラスに拡張メソッドを定義する
static class ExtendSampleClass
{
    // 年代を判定する拡張メソッドを定義
    public static void check(this SampleClass s)
    {
        // 30代以上か判定、出力
        if (30 <= s.age())
        {
            Console.WriteLine("30代以上");
        }

        // 10代以下か判定、出力
        else if (s.age() < 20)
        {
            Console.WriteLine("10代以下");
        }

        // 上記以外は20代、出力
        else
        {
            Console.WriteLine("20");
        }
    }
}

// 生年から年齢(age)(2009年現在)を出力
class SampleClass
{
    int y;

    // 生年を指定して初期化
    public SampleClass(int y)
    {
        this.y=y;
    }

    // 年齢(age)を求める
    public int age()
    {
        return 2009 - this.y;
    }

    // 生年のプロパティ
    public int year
    {
        get
        {
            return this.y;
        }
    }
}
class MainClass
{
    public static void Main()
    {
        // 生年
        SampleClass a = new SampleClass(1995);

        /* 拡張メソッドで年代を判定
         * check()メソッドがSampleClassのメソッドの
         * ように使用 */
        Console.Write("1995年生まれ ");
        // 出力値:10代以下
        a.check();

        var b = new SampleClass(1985);
        Console.Write("1985年生まれ ");
        // 出力値:20
        b.check();

        var c = new SampleClass(1975);
        Console.Write("1975年生まれ ");
        // 出力値:30代以上
        c.check();
    }
}

0 コメント:

コメントを投稿