開発環境
- 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; namespace Sample { public interface IConvertible { string ConvertToCSharp(string str); string ConvertToVisualBasic(string str); } public interface ICodeChecker { bool CodeCheckSyntax(string str, string lang); } public class ProgramConverter : IConvertible { #region IConvertible public string ConvertToCSharp(string str) { return "C#の文字列に変換中・・・"; } public string ConvertToVisualBasic(string lang) { return "Visual Basicの文字列に変換中・・・"; } #endregion } public class ProgramHelper : ProgramConverter, ICodeChecker { #region ICodeChecker public bool CodeCheckSyntax(string str, string lang) { switch (lang) { case "C#": case "Visual Basic": return true; default: return false; } } #endregion } class Tester { public void Run() { ProgramConverter pc = new ProgramConverter(); ProgramHelper ph = new ProgramHelper(); ProgramConverter[] pcs = { pc, ph }; string str = "文字列"; string cs = "C#"; string vb = "Visual Basic"; string js = "JavaScript"; string[] langs = { cs, vb, js }; foreach (string lang in langs) { Console.WriteLine(lang); foreach (ProgramConverter c in pcs) { IConvertible convertible = c as IConvertible; if (convertible != null) { Console.WriteLine(convertible.ConvertToCSharp(str)); Console.WriteLine(convertible.ConvertToVisualBasic(str)); } else { Console.WriteLine("IConvertibleインタフェースを実装していません。"); } ICodeChecker codechecker = c as ICodeChecker; if (codechecker != null) { if (codechecker.CodeCheckSyntax(str, lang)) { Console.WriteLine("構文チェック中・・・"); } else { Console.WriteLine("構文チェック不可"); } } else { Console.WriteLine("ICodecheckerインタフェースを実装していません。"); } } } } static void Main() { Tester t = new Tester(); t.Run(); } } }
入出力結果(Console Window)
C# C#の文字列に変換中・・・ Visual Basicの文字列に変換中・・・ ICodecheckerインタフェースを実装していません。 C#の文字列に変換中・・・ Visual Basicの文字列に変換中・・・ 構文チェック中・・・ Visual Basic C#の文字列に変換中・・・ Visual Basicの文字列に変換中・・・ ICodecheckerインタフェースを実装していません。 C#の文字列に変換中・・・ Visual Basicの文字列に変換中・・・ 構文チェック中・・・ JavaScript C#の文字列に変換中・・・ Visual Basicの文字列に変換中・・・ ICodecheckerインタフェースを実装していません。 C#の文字列に変換中・・・ Visual Basicの文字列に変換中・・・ 構文チェック不可 続行するには何かキーを押してください . . .
0 コメント:
コメントを投稿