DOBON.NET DOBON.NETプログラミング掲示板過去ログ

構造体のListについて

環境/言語:[C#]
分類:[.NET]

お世話になっております。
Listを使用するのは初めてで見当違いの質問かも知れませんが
お願いします。

データをまとめるため構造体を使用し、このデータが複数あるためListを
使用しようと思ってますが構造体のなかにもListを使用したいと思ってます。
コードは以下です。

// 構造体の定義
struct SampleData
{
public string Name;
  public List<string> Setup;
}

// 構造体のリストの定義
private List<SampleData> Elec = new List<SampleData>();

このような場合のSetupをforループで変更は可能でしょうか?
宜しくお願いします。
2011/05/09(Mon) 22:19:09 編集(投稿者)

■No28550に返信(ぽんさんの記事)
> このような場合のSetupをforループで変更は可能でしょうか?

正直なところ、この質問文での意味がわかりません。
次のサンプルで知りたいことがわかりますか?

for (int i = 0; i < Elec.Count; ++i)
{
  // Elec[i].Name = "aaa"; // これは中身が書き換わらない+コンパイルエラーになります。

  SampleData data = new SampleData();
  data.Name = i.ToString();
  data.Setup = new List<string>();
  data.Setup.Add("test");
  Elec[i] = data; // 構造体の List の場合は代入しなおすことが必要
  Console.WriteLine(Elec[i].Name);
}

ポイント:
値型(構造体を含む)の List<T> の場合、[i] で取得した際は一時的なコピーが返されると思うべし。
コピーに対して何をしても、List<T> の中身に変化はない。
わからない質問文で申し訳ありませんでした。
代入しなおす事で解決しました。「ポイント」が大変参考になり
理解する事ができました。的確なご回答ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板