インデックスによるリストアイテムの取得


321

私は最近、Javaから移行してc#を使い始めました。インデックスでリストアイテムを取得する方法が見つからないようです。Javaでは、リストの最初の項目を取得するには、次のようになります。

list1.get(0);

c#で同等のものは何ですか?


4
[]演算子とElementAt()メソッドのどちらを使用するかについては、stackoverflow.com / questions / 5326874 /…を参照してください。
ngm

回答:


362
list1[0];

リストのタイプにインデクサーが定義されていると仮定します。


5
配列などのオブジェクトであるリストにアクセスできる理由を説明する唯一の答え
PrashanD

リスト内のオブジェクトのコピーを返しますか?obj = list [0]; list.clear(); // objは引き続き入力されますか?
ポールマッカーシー

1
@Paul McCarthy:これは自分で簡単にテストできますが、はい。リストはオブジェクトへの参照を保持します。リストをクリアしても、保持されているオブジェクトには影響しません。これらのオブジェクトへの他の参照がない場合、それらはある時点でガベージコレクションされます。
ミッチ小麦

242

リストではElementAt拡張メソッドを使用できます。

例えば:

// Get the first item from the list

using System.Linq;

var myList = new List<string>{ "Yes", "No", "Maybe"};
var firstItem = myList.ElementAt(0);

// Do something with firstItem

24
ElementAt()にはが必要であることに注意してくださいusing System.Linq;
ngm

16
これには標準のmyList[0]表記法よりも優れている点はありますか?
AnalogWeapon 2017年

5
「なぜ[]演算子ではなくEnumerable.ElementAt()を使用するのですか?」 stackoverflow.com/questions/5326874/...
ラバンデ

3
.ElementAtOrDefault();
amit jha

@AnalogWeaponはいそこにある-あなたはヌル安全チェーンの一部、例えばとして使用することができmyCollectionWhichMightBeNull?.ElementAt(0)、存在しない要素againtまたは保護するために:myCollection.ElementAtOrDefault(0)?.SomeProperty
クリス・ピーコック


18

古い質問ですが、このスレッドはごく最近アクティブだったので、2セント投入します。

ほぼ正確にミッチが言ったこと。適切なインデックス付けを前提として、配列にアクセスしているかのように、角括弧表記を使用できます。ただし、数値インデックスを使用することに加えて、メンバーに特定の名前がある場合は、次のように入力することで、一種の同時検索/アクセスを行うことができます。

var temp = list1["DesiredMember"];

知っているほどですよね?


0

.NET Listデータ構造はArray「可変シェル」内にあります。

したがって、次のような要素にアクセスするためにインデックスを使用できます。

var firstElement = myList[0];
var secondElement = myList[1];

以降ではC#8.0に使用できるIndexRangeの要素にアクセスするためのクラス。シーケンスの最後からアクセスするか、シーケンスの特定の部分にアクセスするだけです。

var lastElement = myList[^1]; // Using Index
var fiveElements = myList[2..7]; // Using Range, note that 7 is exclusive

インデックスと範囲を一緒に組み合わせることができます。

var elementsFromThirdToEnd = myList[2..^0]; // Index and Range together

また、LINQ ElementAtメソッドを使用することもできますが、99%の場合、これは実際には不要であり、パフォーマンスが遅いソリューションです。


0

インデックスを使用してリスト要素にアクセスできます

List<string> list1 = new List<string>();
list1[0] //for getting the first element of the list
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.