![メイン画像](https://topview.jp/uploads/2024/06/1719247492-c-oftype-でコレクションをフィルタリングする-1024x615.png)
C# - OfType でコレクションをフィルタリングしてみた
C# - OfType でコレクションをフィルタリングしてみた
コレクションをフィルタリングする OfType というメソッドがあります。
このメソッドの動きと結果を再確認しました。
(いままで何となく雰囲気で使っていたのもあったので)
動作は .NET 8 で確認しました。
まずは正常な使い方から。
次のコードはコレクションの要素を string でフィルタリングします。
この結果は要素を1つだけ持ったコレクションが返ります。
要素の値は "Text" です。
var list = new System.Collections.ArrayList()
{
null,
3.0,
new Dictionary<string, object>(),
"Text",
};
// string でフィルタリングする
// → "Text" という値の要素を1個持ったコレクションが返る
var results = list.OfType<string>();
続けてコレクションの中に該当する型がなかった場合です。
このケースは0個の要素を持ったコレクションが返ります。
var list = new System.Collections.ArrayList()
{
null,
3.0,
new Dictionary<string, object>(),
};
// string でフィルタリング
var results = list.OfType<string>();
同じことですが、もとのコレクションが0件だった場合も0個の要素を持ったコレクションが返ります。
var list = new System.Collections.ArrayList();
var results = list.OfType<string>();
コレクションが null だった場合は、例外 `ArgumentNullException` が発生します。
「Value cannot be null. (Parameter 'source') 」だそうです。
ArrayList? list = null;
var results = list.OfType<string>();
null 条件演算子( `?.` )を使うと null が返ります。
まぁ null 条件演算子の動作どおりだよね、という結果です。
ArrayList? list = null;
var results = list?.OfType<string>();
フィルタリング対象のコレクションが null かどうかだけ見ておけば、あとは安全に処理できそうです。
アカウントを作成 して、もっと沢山の記事を読みませんか?
この記事が気に入ったら ことりと さんを応援しませんか?
メッセージを添えてチップを送ることができます。
![ことりと](https://topview.jp/uploads/2022/09/1662696319-imgp1375-150x150.jpeg)
ことりと さんにチップを送りました
チップをありがとうございます。
メッセージは管理画面から確認できます。
酒とアクアリウムが最近の楽しみ。
このクリエイターの人気記事
最新記事
![](https://www10.a8.net/0.gif?a8mat=3HCEL8+4XF8LE+3O80+5ZU29)
TOPVIEWの人気記事
おすすめの記事
この記事にコメントをしてみませんか?