カテゴリー
C

独習C#第3版、P334 インターフェイスとクラスのオブジェクトを返し値にする。

using System;

namespace Chapter01All
{
    class StringChangeInt
    {
        public int kekkaInt;
        public String kekkaString;
        public bool kekka;
    }
    interface ChangeInt
    {
        StringChangeInt Routine(String str);
        String NotConv(String str);
    }

    class InterFaceSample: ChangeInt
    {
        public StringChangeInt Routine(String s)
        {
            StringChangeInt stci = new StringChangeInt();
            int w = 0;
            for(int i=0; i<s.Length; i++)
            {
                int work;
                work = s[i] - '0';
                if(!(work <= 0 & work >= 9)){
                    stci.kekkaInt = -1;
                    stci.kekkaString = s;
                    stci.kekka = false;
                    return stci;
                }
                w = (w * 10)  + s[i] - '0';
            }
            stci.kekkaInt = w;
            stci.kekkaString = "";
            stci.kekka = true;
            return stci;
        }
        public String NotConv(String str)
        {
            return str;
        }
    }
    class InterfaceSample
    {
        static void Main()
        {
            InterFaceSample obj = new InterFaceSample();
            StringChangeInt w = new StringChangeInt();
            w = obj.Routine("100");
            if (w.kekka)
                Console.WriteLine(w.kekkaInt);
            else
                Console.WriteLine(w.kekkaString);
            w = obj.Routine("ABC");
            if (w.kekka)
                Console.WriteLine(w.kekkaInt);
            else
                Console.WriteLine(w.kekkaString);

        }
    }
}
 

 数値変換するとエラーになる場合と正常に変換できる場合いがあります。同じルーティンで処理するには、class StringChangeIntを使うしかないのか?本来であれば、というか、出力する場面でもif文を使わないで出来ればパーフェクトなんでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

inserted by FC2 system