[C#]IEnumerableはListではない(当たり前だが...)

  • 投稿日:
  • by
  • Category:

IEnumerableとListが別物であることは至極当然なんだけど、C#でLINQを使う中でIEnumerableとListの違いがいまいちよく分かっていなかったので復習。

 

背景

客先でC#を触るとき、大抵は

  • IEnumerable:Dapperから取ってきたデータやそれをLINQで加工する際に使用→遅延評価で効率よく処理できる。
  • List:Dapperにクエリを投げる際のパラメータ用クラスの作成やListのAdd、Remove、インデクサを使ってのアクセスなどLINQを使わないデータ加工に使用。→前もってIEnumerableをToList()で変換から操作してやらないといけない(ToListで変換する時に実際の評価が走る)

このような認識、使い分けをしている。

IEnumerableでは遅延評価をめいっぱい活用してLINQでデータをガシガシ加工できるが、その代わりにListのようにAdd/Removetといった変更はできないし、hoge[1]といった形でインデクサによるアクセスもできない。ここがIEnumerableとListの違いで、それぞれ一長一短だと思っている。ここまでが知っていたこと。

 

IEnumerable、ICollection、IList

大抵はIEnumerableとIListインターフェイスしか使わないが、実はICollectionというものもある。

この3つのインターフェイスの違いは以下のとおりである。

Rakuten Miniのガラスフィルムを貼ってみた

1円で購入したRakuten Mini。

ハードケースが一日で割れた充電できないケーブルがあったり、なかなか思うようにいかないものの、

おサイフケータイに対応していたりポケットWiFiのような使い方ができるので重宝している。

トライタンハードケースの記事でも紹介した通り、公式のガラスフィルムも購入したものの、Rakuten Miniには初めから保護シートが付いている。

005.jpgのサムネイル画像

買っていきなりズタボロにしてしまったが、とりあえず剥がれるまでは使えるのでガラスフィルムは予備として保管していた。

サウンドハウスのCLASSIC PRO ( クラシックプロ ) / CHD201を買ったけどOBSで音が出ない時の対処法

サウンドハウスのCLASSIC PRO(CHD201)というHDMIキャプチャデバイスを購入した。

000.png

USB接続でお気軽にHDMIのキャプチャが可能で、しかもお値段が税込で1,078円。

まともなキャプチャデバイスを買おうとすると一万円はくだらない。正直な話、破格である。

似たような製品はAmazonにたくさんあるが、コスパと信頼性、納期を考えたらサウンドハウス一択だろう。

2個買うと送料無料ラインの2000円をちょうど超える。後は分かっているな?(2個買った)

2021年 新年ご挨拶

新年、明けましておめでとうございます。

昨年からの新型コロナウイルスの影響により自粛生活を余儀なくされた方も多いと思います。

一日も早く落ち着いた生活を取り戻せるよう心よりお祈り申し上げます。

本年も相変わらず興味・関心の赴くままネタを投下していきたいと思いますので、これまで同様のご愛顧を賜りますようお願い申し上げます。