開発環境
- Microsoft Windows 8 Pro 64bit 日本語 (OS)
- Microsoft Visual Studio Express 2012 for Windows Desktop (IDE)
- プログラミング言語: C#
『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487312-194-7)の 第13章(インタフェース)13.10(練習問題)練習13-4.を解いてみる。
その他参考書籍
練習13-4.
コード
using System; interface IConvertible { string ConvertToCSharp(string str); string ConvertToJavaScript(string str); } interface ICodeChecker : IConvertible { bool CodeCheckSyntax(string s, string lang); } class ProgramConverter : IConvertible { public ProgramConverter() { Console.WriteLine("ProgramConverterを作成"); } #region IConvertible public string ConvertToCSharp(string str) { return "C#の文字列に変換中…"; } public string ConvertToJavaScript(string str) { return "JavaScriptの文字列に変換中…"; } #endregion } class ProgramHelper : ProgramConverter, ICodeChecker { public ProgramHelper() { Console.WriteLine("ProgramHelperを作成"); } #region ICodeChecker public bool CodeCheckSyntax(string s, string lang) { switch (lang) { case "C#": case "JavaScript": return true; default: return false; } } #endregion } class Tester { public void Run() { ProgramHelper ph = new ProgramHelper(); ProgramConverter pc = new ProgramConverter(); ProgramConverter[] pcs = { ph, pc }; string s = "文字列"; string cs = "C#"; string js = "JavaScript"; string py = "Python"; string[] langs = { cs, js, py }; foreach (ProgramConverter item in pcs) { Console.WriteLine("as演算子"); ICodeChecker ic = item as ICodeChecker; if (ic != null) { foreach (string lang in langs) { Console.WriteLine(ic.CodeCheckSyntax(s, lang)); } } else { Console.WriteLine("ICodeCheckerは実装されていません。"); } Console.WriteLine("is演算子"); if (ic is ICodeChecker) { ICodeChecker tmp = (ICodeChecker)ic; foreach (string lang in langs) { Console.WriteLine(tmp.CodeCheckSyntax(s, lang)); } } else { Console.WriteLine("ICodeCheckerは実装されていません。"); } } } static void Main() { Tester t = new Tester(); t.Run(); } }
入出力結果(Console Window)
ProgramConverterを作成 ProgramHelperを作成 ProgramConverterを作成 as演算子 True True False is演算子 True True False as演算子 ICodeCheckerは実装されていません。 is演算子 ICodeCheckerは実装されていません。 続行するには何かキーを押してください . . .
0 コメント:
コメントを投稿