開発環境
- Microsoft Windows 7 Home Premium (OS)
- Microsoft Visual C# 2010 Express Edition (IDE)
- 言語: C#
『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487311-294-7)の 第13章(インタフェース)13.10(練習問題)練習13-4を解いてみる。
その他参考書籍
練習13-4.
コード
using System; interface IConvertible { string ConvertToCSharp(string str); string ConvertToVB(string str); } interface ICodeChecker : IConvertible { bool CodeCheckSyntax(string str, string lang); } class ProgramHelper : ICodeChecker { public ProgramHelper() { Console.WriteLine("ProgramHelper"); } #region IConvertible public string ConvertToCSharp(string str) { return "文字列をC#の文字列に変換中・・・"; } public string ConvertToVB(string str) { return "文字列をVBの文字列に変換中・・・"; } #endregion #region ICodeChecker public bool CodeCheckSyntax(string str, string lang) { switch (lang) { case "C#": case "VB": return true; default: return false; } } #endregion } class ProgramConverter : IConvertible { public ProgramConverter() { Console.WriteLine("ProgramConverter"); } #region IConvertible public string ConvertToCSharp(string str) { return "文字列をC#の文字列に変換中・・・"; } public string ConvertToVB(string str) { return "文字列をVBの文字列に変換中・・・"; } #endregion } class Tester { public void Run() { ProgramHelper ph = new ProgramHelper(); ProgramConverter pc = new ProgramConverter(); string str = "文字列"; string cs = "C#"; string vb = "VB"; string js = "JavaScript"; string py = "Python"; string[] langs = { cs, vb, js, py }; IConvertible[] ics = { ph, pc }; foreach (IConvertible ic in ics) { Console.WriteLine("is演算子"); if (ic is ICodeChecker) { Console.WriteLine("構文チェック可能"); ICodeChecker i = (ICodeChecker)ic; foreach (string lang in langs) { Console.WriteLine(i.CodeCheckSyntax(str, lang)); } } else { Console.WriteLine("構文チェック不可能"); } Console.WriteLine("as演算子"); ICodeChecker icc = ic as ICodeChecker; if (icc != null) { Console.WriteLine("構文チェック可能"); foreach (string lang in langs) { Console.WriteLine(icc.CodeCheckSyntax(str, lang)); } } else { Console.WriteLine("構文チェック不可能"); } } } static void Main() { Tester t = new Tester(); t.Run(); } }
入出力結果(Console Window)
ProgramHelper ProgramConverter is演算子 構文チェック可能 True True False False as演算子 構文チェック可能 True True False False is演算子 構文チェック不可能 as演算子 構文チェック不可能 続行するには何かキーを押してください . . .
0 コメント:
コメントを投稿