今回は、ElementAt拡張メソッドとElementAtOrDefault拡張メソッドについてです。
どちらも、前回と前々回に記述したFirst,FirstOrDefault拡張メソッドなどと同じ動きをします。
ElementAtは指定されたインデックス位置の要素を返します。
ElementAtOrDefaultは、範囲外のインデックスを指定された場合に規定値を返します。
書式は以下の通り。
public static TSource ElementAt<TSource>( this IEnumerable<TSource> source, int index ) public static TSource ElementAtOrDefault<TSource>( this IEnumerable<TSource> source, int index )
以下、サンプルです。
#region LinqSample-47 public class LinqSamples47 : IExecutable { public void Execute() { // // ElementAt拡張メソッドは、指定した位置の要素を取得するメソッド。 // // 範囲外のインデックスを指定した場合は例外が発生する. // var languages = new string[] { "csharp", "visualbasic", "java", "python", "ruby", "php", "c++" }; Console.WriteLine(languages.ElementAt(1)); try { languages.ElementAt(100); } catch(ArgumentOutOfRangeException) { Console.WriteLine("要素の範囲外のインデックスを指定している。"); } // // ElementAtOrDefault拡張メソッドは、ElementAt拡張メソッドと同じ動作を // しながら、範囲外のインデックスを指定された場合に規定値を返すメソッド。 // Console.WriteLine(languages.ElementAtOrDefault(-1) ?? "null"); Console.WriteLine(languages.ElementAtOrDefault(100) ?? "null"); } } #endregion
実行結果は以下の通りです。
visualbasic 要素の範囲外のインデックスを指定している。 null null
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ