2009年12月28日月曜日

explicitキーワードとimplicitキーワードを使用して型変換を定義し、実際に型変換してみる。
using System;


class SampleClass
{
    string n;
    int a;
    public SampleClass(string name, int age)
    {
        this.n = name;
        this.a = age;
    }
    public void printOut()
    {
        Console.Write("{0} ",this.n);
        Console.WriteLine(this.a);
    }
    /*
    public static explicit operator SampeClass(string name)
    {
        return new SampleClass(name, 0);
    }
     */
    public static explicit operator SampleClass(int age)
    {
        return new SampleClass("Kamimura",age);
    }
    /* string型をSampleClass型に明示的に
     * (暗黙的にも)型変換出来ないことがわかったので
     * コメントに
    public static implicit operator SampleClass(int age)
    {
        return new SampleClass("Kamimura", age);
    }*/
    public static implicit operator SampleClass(string name)
    {
        return new SampleClass(name,1);
    }
}


class MainClass
{
    static void Main()
    {
        /* string型をSampleClass型に
         * 変換することは出来ないみたい
         * なのでコメントに */
        // SampleClass s1=(SampleClass)"Kamimura";
        // 明示的に型変換
        SampleClass s2 = (SampleClass)0;
        // 出力値:Kamimura 0
        s2.printOut();
        // 暗黙的に型変換
        SampleClass s3 = "Kamimura1";
        // 出力値:Kamimura1 1
        s3.printOut();
    }
}

0 コメント:

コメントを投稿