2010年2月24日水曜日

operator keywordを使用して単項演算子のtrue,falseをOverloadし、2つのint型の値がともに0以上ならTrue、そうではない場合はFalseを返すようにしてその結果を表示するMethodもif文を利用して定義し、そのClassをインスタンス化して想定通りに機能するか確認してみる。

using System;

class SampleClass
{
    int n, m;

    // n,mに値を代入
    public SampleClass(int n, int m)
    {
        this.n = n;
        this.m = m;
    }

    // true演算子をOverload
    public static bool operator true(SampleClass a)
    {
        return (0 <= a.n) && (0 <= a.m);
    }

    // false演算子をOverload
    public static bool operator false(SampleClass a)
    {
        return (a.n < 0) || (a.m < 0);
    }

    // 真偽を表示
    public void printOut(SampleClass a)
    {
        if (a)
        {
            Console.WriteLine("True");
        }

        else
        {
            Console.WriteLine("False");
        }
    }
}

class MainClass
{
    static void Main()
    {
        // SampleClassをインスタンス化
        SampleClass a = new SampleClass(1, 1);
        SampleClass b = new SampleClass(1, -1);
        SampleClass c = new SampleClass(-1, -1);

        /* 出力値
         * True
         * False
         * False */
        a.printOut(a);
        b.printOut(b);
        c.printOut(c);
    }
}

0 コメント:

コメントを投稿