私は最近、Javaから移行してc#を使い始めました。インデックスでリストアイテムを取得する方法が見つからないようです。Javaでは、リストの最初の項目を取得するには、次のようになります。
list1.get(0);
c#で同等のものは何ですか?
私は最近、Javaから移行してc#を使い始めました。インデックスでリストアイテムを取得する方法が見つからないようです。Javaでは、リストの最初の項目を取得するには、次のようになります。
list1.get(0);
c#で同等のものは何ですか?
回答:
list1[0];
リストのタイプにインデクサーが定義されていると仮定します。
リストでは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
using System.Linq;
。
myList[0]
表記法よりも優れている点はありますか?
.ElementAtOrDefault();
myCollectionWhichMightBeNull?.ElementAt(0)
、存在しない要素againtまたは保護するために:myCollection.ElementAtOrDefault(0)?.SomeProperty
Visual Basic、C#、およびC ++にはすべて、名前を使用せずにItemプロパティにアクセスするための構文があります。代わりに、Listを含む変数が配列のように使用されます。
List[index]
たとえば、https://msdn.microsoft.com/en-us/library/0ebtbkkc(v = vs.110).aspxを参照して ください。
.NET List
データ構造はArray
「可変シェル」内にあります。
したがって、次のような要素にアクセスするためにインデックスを使用できます。
var firstElement = myList[0];
var secondElement = myList[1];
以降ではC#8.0に使用できるIndex
とRange
の要素にアクセスするためのクラス。シーケンスの最後からアクセスするか、シーケンスの特定の部分にアクセスするだけです。
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%の場合、これは実際には不要であり、パフォーマンスが遅いソリューションです。