C#の『ElementAtOrDefault』の使い方が分からない…教えてください!
C#を学んでいるけど…
「ElementAtOrDefaultの使い方が分からない」
このような疑問を持っていませんか?
この記事では、LINQのひとつである『ElementAtOrDefault』について現役エンジニアが分かりやすく解説します。
まだ、C#の開発環境構築が出来ていない方はこちらを参考にしてください。
ElementAtOrDefaultの使い方
ElementAtOrDefaultの使い方を解説する前に、ElementAtOrDefaultで何が出来るのかを把握しておきましょう。
ElementAtOrDefault = 指定したインデックス位置にある値を出力
このような考え方で問題ありません。ElementAtOrDefaultを使用すると配列などのデータのまとまりから、指定したインデックス位置にある要素を出力できます。
ここまで読んでいると、「ElementAtと使い方変わらない」と思いますよね。
ElementAtについて分からない方は、以下の記事を参考にしてください。
ElementAtとElementAtOrDefaultの違いは以下のようになります。
それでは、実際のコードを用いながらElementAtOrDefaultの使い方を解説していきます。
まずは、ElementAtOrDefaultの使い方から説明します。ElementAtOrDefaultを使って抽出するときには以下のように記述します。
配列.ElementAtOrDefault(index)
実際のコードを用いながらElementAtOrDefaultの使い方を解説していきます。
ElementAtOrDefaultを使ってシーケンスを出力するときには以下のように記述します。
using System;
using System.Collections.Generic;
using System.Linq;
namespace sample
{
class LinqElementAtOrDefault
{
static public void BlogLinqElementAtOrDefault()
{
//値一覧を変数NumberListとして宣言・初期化
int[] NumberList = new int[] {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
};
//NumberListの要素数回繰り返し(指定インデックスに要素あり)
for (int Index = 0; Index < NumberList.Length; Index++)
{
//NumberListのIndex番目の要素を出力
Console.WriteLine($"{Index}番目の要素:{NumberList.ElementAtOrDefault(Index)}");
}
//100番目の要素を出力(指定インデックスに要素なし)
Console.WriteLine($"100番目の要素:{NumberList.ElementAtOrDefault(100)}");
}
}
}
サンプルコードを実行した際の出力結果は、以下のようになります。
0番目の要素:0
1番目の要素:1
2番目の要素:2
3番目の要素:3
4番目の要素:4
5番目の要素:5
6番目の要素:6
7番目の要素:7
8番目の要素:8
9番目の要素:9
100番目の要素:0
注目していただきたいのは、ElementAtOrDefaultを使っている29行目、33行目です。
配列.ElementAtOrDefault(index)
これを基にサンプルコードを解説すると、「配列 = NumberList」、「index = Index」となります。
つまり、配列(NumberList)の要素番号(Index)を出力(Console.WriteLine)するということです。
特に注目して欲しいのは、100番目の要素が0と出力されていることです。
ElementAtOrDefaultでは、存在しないインデックスを指定すると「0」を返すことです。(int型の場合)
このようにして、C#ではElementAtOrDefaultを使用することで、コードを簡潔に書くことが出来ます。
【まとめ】ElementAtOrDefaultは指定したインデックス位置にある値を出力できる
ElementAtOrDefaultの使い方は理解できましたか?
この記事では、C#のElementAtOrDefaultの使い方について紹介しました。
最後になりますが、ここに関してもっと詳しく教えて欲しいときなどは、遠慮なく、お問い合わせ、コメント、Twitterにてご連絡ください。
最後までお読みいただきありがとうございました。