2009年12月8日火曜日

operatorキーワードを使用して、単項演算子(true,fale)をオーバーロードしてみる。
using System;

class SampleClass
{
    int n;
    string s;

    public SampleClass(int n, string s)
    {
        this.n = n;
        this.s = s;
    }

    // 演算子trueのオーバーロード
    public static bool operator true(SampleClass singi)
    {
        return (singi.n!= 0) && (singi.s != null);
    }

    // 演算子falseのオーバーロード
    public static bool operator false(SampleClass singi)
    {
        return (singi.n == 0) || (singi.s == null);
    }
}

class MainClass
{
    // 真偽の判定
    public static void boolSample(SampleClass a)
    {
        if (a)
        {
            Console.WriteLine("");
        }
        else
        {
            Console.WriteLine("");
        }
    }

    public static void Main()
    {
        SampleClass a = new SampleClass(1, "Kamimura");
        SampleClass b = new SampleClass(0, "Kamimura");
        SampleClass c = new SampleClass(1,null);
        SampleClass d = new SampleClass(0, null);

        // 出力値:
        boolSample(a);
        // 出力値:
        boolSample(b);
        // 出力値:
        boolSample(c);
        // 出力値:
        boolSample(d);
    }
}

0 コメント:

コメントを投稿