前回はメソッドを作って,3文字以上の文字列を取得するロジックを作成しました。今回は,メソッドに引数を渡して,任意の文字数以上の文字列を取得するロジックを作成してみます。
新しいメソッドの追加
まずは新しいメソッドを作成します。といっても前回のGetValue1のメソッドとほとんど同じです。違いはメソッド名がGetValue2になっていることと,intのlenという引数を追加し,3桁で比較していた部分をlenに変更しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
private string[] GetValue2(string[] values, int len) { var result = new List(); foreach (var val in values) { if (val.Length >= len) { result.Add(val); } } return result.ToArray(); } |
len引数を追加し,桁数の比較に使用することで,今まで3桁以上の文字列を取得していた部分が,引数で自由な桁数で比較できるようになります。
ボタンの追加
今作成したGetValue2メソッドを呼び出すためのコードを記述するために,画面に新しいボタンを追加します。
ボタンを追加したらダブルクリックをしてクリックイベントを自動生成し,次のようにロジックを記述します。
1 2 3 4 5 6 7 |
private void button2_Click(object sender, EventArgs e) { var values = new string[] { "A", "BB", "CCC", "DDDD", "EEEEE" }; var result = GetValue2(values, 4); Console.WriteLine(string.Join(",", result)); } |
valuesの配列は前回までと同じで,桁数の異なる5つの文字列です。resultには先ほど作成したGetValue2の結果を返却するようにしていますが,ここで,第2引数を4とすることで,4文字以上の文字列を取得するように記述しています。最後にConsole.WriteLineの部分で,結果を出力ウィンドウに表示させています。
実行
この状態で実行すると,4文字以上の文字列だけが取得されるはずです。実行してbutton2を押下し,出力ウィンドウを確認してみましょう。
いままで出力されていたCが出力されなくなり,DとEだけが出力されています。これで4文字以上の文字列だけが出力されていることが確認できました。
C#を正しい3層構造で造れてますか?
#00_はじめに
#01_単一責務の原則とは
#02_原則違反の例
#03_変更理由単位でクラスを分ける
#04_3層構造の例
#05_修正箇所を最小にできる
#06_修正する場所が明確になる
#07_共通化しましょうという話ではない
#08_少々悪いコードでも問題視しない理由
#09_探しやすいコード
#10_クラスは機能ごとに小さく作る
#11_小さなクラスがそれぞれに協調して目的を達成させる
#12_多数の部品群のなかから摘まんで作る
#13_クラスはどこまで小さくすればいいのか
#14_アンダーソン式単一責務の原則
#15_最小カプセルの検証_監視タイマークラス
#16_最小カプセルの検証_受注画面クラス
#17_最小カプセルの検証_ユーザークラス
#18_最小カプセルの検証_商品マスターデータアクセス
#19_登場人物に合わせたモデリングの四角と線
#20_四角と線を最小カプセル化する
#21_アンダーソン式手順
#22_パターンを見つけ出す
#23_プログラミングの自問
#24_さいごに