私は最近、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
Visual Basic、C#、およびC++にはすべて、名前を使用せずにItemプロパティにアクセスするための構文があります。代わりに、Listを含む変数は、まるでそれが配列であるかのように使用されます。
List[index]
例を参照してください。 https://msdn.Microsoft.com/ja-jp/library/0ebtbkkc(v=vs.110).aspx
昔の質問ですが、このスレッドはごく最近アクティブになっていることがわかります。そこで先に進み、2セントを投入します。
まさしくミッチが言ったこと。適切なインデックスを作成すると仮定して、配列にアクセスしているかのように角括弧表記を使用することができます。ただし、メンバーに特定の名前がある場合は、数値インデックスを使用するだけでなく、次のように入力して一種の同時検索/アクセスを行うことができます。
var temp = list1["DesiredMember"];
もっと知っている、そうでしょ?
これが私のコードです。コードはリストボックスと選択ボタンを使用します。リストボックスのselectedItemに従ったリスト内のselect要素に使用されるElementAt():
public class Test
{
private struct Data
{
public int Id { get; set; }
public string Text { get; set; }
}
private List<Data> data = null;
private Data SelDataReg { get; set; } = null;
private void Start()
{
this.data = new List<Data>
{
new Data{ Id = 0, Text = "Reg 0" }
, new Data{ Id = 1, Text = "Reg 1" }
, new Data{ Id = 2, Text = "Reg 2" }
, new Data{ Id = 3, Text = "Reg 3" }
};
// ListBox
this.ListBoxControl.DisplayMember = "Text";
this.ListBoxControl.DataSource = this.data;
}
private void ButSelect_Click(object sender, EventArgs e)
{
if(this.ListBoxControl.SelectedIndex == -1) return;
this.SelDataReg = this.data.ElementAt(this.ListBoxControl.SelectedIndex);
MessageBox.Show("Okay, you are selected " + this.SelDataReg.Text);
}
}