2018年1月11日木曜日

開発環境

初めてのC# 第2版 (Jesse Liberty (著)、Brian MacDonald (著)日向 俊二 (翻訳)、オライリージャパン)の13章(インターフェース)、13.10(練習問題)、練習13-4.を取り組んでみる。

コード

using System;

namespace Sample13_4
{
    interface IConvertible
    {
        string ConvertToCSharp(string s);
        string ConvertToVB2017(string s);
    }
    interface ICodeChecker: IConvertible
    {
        bool CodeCheckSyntax(string str, string lang);
    }
    class ProgramConverter : IConvertible
    {
        #region IConvertible
        public string ConvertToCSharp(string s)
        {
            return String.Format("ProgramConverter, IConvertible, ConvertToCSharp: {0}", s);
        }
        public string ConvertToVB2017(string s)
        {
            return String.Format("ProgramConverter, IConvertible, ConvertToVB2017:D {0}", s);
        }
        #endregion
    }
    class ProgramHelper : ProgramConverter, ICodeChecker
    {
        #region ICodeChecker
        public bool CodeCheckSyntax(string str, string lang)
        {
            Console.WriteLine("CodeCheckSyntax: {0}, {1}", str, lang);
            return true;
        }
        #endregion

    }
    class Program
    {
        static void Main(string[] args)
        {
            ProgramConverter pc = new ProgramConverter();
            ProgramHelper ph = new ProgramHelper();
            string str = "STR";
            ProgramConverter[] pcs = { ph, ph };

            foreach (var item in pcs)
            {
                Console.WriteLine(item.ConvertToCSharp(str));
                Console.WriteLine(item.ConvertToVB2017(str));
                Console.WriteLine("is");
                if (item is ICodeChecker)
                {
                    ICodeChecker t1 = (ICodeChecker)item;
                    Console.WriteLine(((ICodeChecker)item).CodeCheckSyntax(str, "C#"));
                }
                Console.WriteLine("as");
                ICodeChecker t2 = item as ICodeChecker;
                if (t2 != null)
                {
                    Console.WriteLine(t2.CodeCheckSyntax(str, "VB"));
                }
            }
        }
    }
}

入出力結果(Terminal)

ProgramConverter, IConvertible, ConvertToCSharp: STR
ProgramConverter, IConvertible, ConvertToVB2017:D STR
is
CodeCheckSyntax: STR, C#
True
as
CodeCheckSyntax: STR, VB
True
ProgramConverter, IConvertible, ConvertToCSharp: STR
ProgramConverter, IConvertible, ConvertToVB2017:D STR
is
CodeCheckSyntax: STR, C#
True
as
CodeCheckSyntax: STR, VB
True

Press any key to continue...

0 コメント:

コメントを投稿