C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 構造体をリストで


(過去ログ 31 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■14759 / inTopicNo.1)  構造体をリストで
  
□投稿者/ ぽん他 (16回)-(2008/02/26(Tue) 20:23:20)

分類:[C#] 

いつもお世話になっております。ぽん他です。

構造体をリストで持つなんてことは可能でしょうか?
(配列ではなくて)

 ↓ こんなイメージでセットして読み出したいです。
   (もちろん↓はNGです)
private struct Abc
{
public String strA;
public String strB;
}
----------------------------

ArrayList xxx = new ArrayList();
Abc ap;
ap.strA = "1";
ap.strB = "あ";
xxx.Add(tp);
ap.strA = "2";
ap.strB = "い";
xxx.Add(tp);
-----------------------------

Abc ap;
ap = (struct)TempoList[0];
String zzz = ap.strA;

宜しくお願い致します。

引用返信 編集キー/
■14760 / inTopicNo.2)  Re[1]: 構造体をリストで
□投稿者/ 魔界の仮面弁士 (659回)-(2008/02/26(Tue) 20:31:42)
No14759 (ぽん他 さん) に返信
> ap.strB = "あ";
> xxx.Add(tp);
ap と tp は、同一のものですか?

> ArrayList xxx = new ArrayList();
> -----------------------------
> ap = (struct)TempoList[0];
xxx と TempoList は、同一のものですか?


> 宜しくお願い致します。
細かい関係性が良くわかりませんが、こういうことで良いのかな。

using System;
using System.Collections;
class Sample
{
  static void Main()
  {
     ArrayList xxx = new ArrayList();
     Abc tp;
     tp.strA = "1";
     tp.strB = "あ";
     xxx.Add(tp);
     tp.strA = "2";
     tp.strB = "い";
     xxx.Add(tp);
     //------------

     Abc ap;
     ap = (Abc)xxx[0];
     Console.WriteLine(ap.strA + "," + ap.strB);
     ap = (Abc)xxx[1];
     Console.WriteLine(ap.strA + "," + ap.strB);
  }

  private struct Abc
  {
    public String strA;
    public String strB;
  }
}

引用返信 編集キー/
■14761 / inTopicNo.3)  Re[1]: 構造体をリストで
□投稿者/ よねKEN (125回)-(2008/02/26(Tue) 20:32:09)
> 構造体をリストで持つなんてことは可能でしょうか?
> (配列ではなくて)

普通に可能ですよ。実際にはどんなコードを書いて、
どううまくいっていないのでしょうか?

後、.NET Frameworkのバージョンはなんですか?
2.0以降であれば、ArrayListよりList(Of T)の方がよいと思います。

引用返信 編集キー/
■14762 / inTopicNo.4)  Re[2]: 構造体をリストで
□投稿者/ 魔界の仮面弁士 (660回)-(2008/02/26(Tue) 20:36:22)
No14760 (魔界の仮面弁士 さん) に返信
>>ap = (struct)TempoList[0];
> 細かい関係性が良くわかりませんが、こういうことで良いのかな。

ArrayList だとキャストが面倒なので、ジェネリック List に変更。


using System;
using System.Collections.Generic;
class Sample
{
  static List<Abc> TempoList;
  static void Main()
  {
     TempoList = new List<Abc>();
     Abc tp;
     tp.strA = "1";
     tp.strB = "あ";
     TempoList.Add(tp);
     tp.strA = "2";
     tp.strB = "い";
     TempoList.Add(tp);
     //------------

     Abc ap;
     ap = TempoList[0];
     Console.WriteLine(ap.strA + "," + ap.strB);
     ap = TempoList[1];
     Console.WriteLine(ap.strA + "," + ap.strB);
  }

  private struct Abc
  {
    public String strA;
    public String strB;
  }
}

引用返信 編集キー/
■14765 / inTopicNo.5)  Re[3]: 構造体をリストで
□投稿者/ ぽん他 (17回)-(2008/02/26(Tue) 21:01:09)
よねKENさま、魔界の仮面弁士さま
いつもお世話になっております。ぽん他です。
すばやい返答ありがとうございます。

参考にさせて頂き、↓のようにやってみたら
希望したとおり動いているようです?
本当に良いのか判断できないので、もう少し勉強してみます。
ジェネリック List 助かりました。

#また、.NET Frameworkは、2.0以降でした。
#これからはこの情報も書くようにします。

ほんと、いつもありがとうございます。


public struct AbcX
{
public String strA;
public String strB;
}

public List<AbcX> getABC()
{
List<AbcX> sss = new List<AbcX>();
AbcX abcx;
abcx.strA = "1";
abcx.strB = "あ";
sss.Add(abcx);
abcx.strA = "2";
abcx.strB = "い";
sss.Add(abcx);
return sss;
}

------------------
List<AbcX> sss = new List<AbcX>();
QClass qcl = new QClass();
sss = qcl.getABC();
AbcX abcx;
abcx = sss[0];
String xxx = abcx.strA;
abcx = sss[1];
String yyy = abcx.strA;


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -