プログラミング(Python、Perl、C、Go、JavaScript)、数学、読書…
開発環境
"初めてのC# 第2版"の第13章(インターフェース))の13.10(練習問題)13-4を解いてみる。
練習 13-4
using System; interface IConvertible { string ConvertToCSharp(string s); string ConvertToVB2005(string s); } interface ICodeChecker : IConvertible { bool CodeCheckSyntax(string s, string lang); } public class ProgramConverter : IConvertible { #region IConvertible public string ConvertToCSharp(string s) { return "文字列をC#の文字列に変換"; } public string ConvertToVB2005(string s) { return "文字列をVB2005の文字列に変換"; } #endregion // IConvertible } public class ProgramHelper : ProgramConverter, ICodeChecker { #region ICodeChecker public bool CodeCheckSyntax(string s, string lang) { switch(lang) { case "CSharp": Console.WriteLine( "文字列\"{0}\"が{1}のシンタックスかチェック", s,lang); return true; case "VB2005": Console.WriteLine( "文字列\"{0}\"が{1}のシンタックスかチェック", s, lang); return true; default: Console.WriteLine( "文字列\"{0}\"はCSharpとVB2005のシンタックスではない", s); return false; } } #endregion // ICodeChecker } class Tester { void Run() { ProgramConverter[] array = new ProgramConverter[3]; string s = "コード"; string cs="CSharp"; string vb="VB2005"; for (int i = 0; i < array.Length; i++) { if (i % 2 == 0) { ProgramHelper helper = new ProgramHelper(); array[i] = helper; } else { ProgramConverter converter = new ProgramConverter(); array[i] = converter; } } foreach (ProgramConverter converter in array) { Console.WriteLine("\nisで {0} をテスト中", converter); if (converter is ICodeChecker) { ICodeChecker checker = converter as ICodeChecker; checker.CodeCheckSyntax(s, cs); checker.CodeCheckSyntax(s, vb); } else { Console.WriteLine( "このオブジェクトはシンタックスをチェックできません"); } } foreach (ProgramConverter converter in array) { Console.WriteLine("\nasで {0} をテスト中", converter); ICodeChecker checker = converter as ICodeChecker; if (checker != null) { checker.CodeCheckSyntax(s, cs); checker.CodeCheckSyntax(s, vb); } else { Console.WriteLine( "このオブジェクトはシンタックスをチェックできません"); } } } static void Main() { Tester t = new Tester(); t.Run(); } }
出力結果
isで ProgramHelper をテスト中 文字列"コード"がCSharpのシンタックスかチェック 文字列"コード"がVB2005のシンタックスかチェック isで ProgramConverter をテスト中 このオブジェクトはシンタックスをチェックできません isで ProgramHelper をテスト中 文字列"コード"がCSharpのシンタックスかチェック 文字列"コード"がVB2005のシンタックスかチェック asで ProgramHelper をテスト中 文字列"コード"がCSharpのシンタックスかチェック 文字列"コード"がVB2005のシンタックスかチェック asで ProgramConverter をテスト中 このオブジェクトはシンタックスをチェックできません asで ProgramHelper をテスト中 文字列"コード"がCSharpのシンタックスかチェック 文字列"コード"がVB2005のシンタックスかチェック 続行するには何かキーを押してください . . .
0 コメント:
コメントを投稿