実現したいこと
独自クラスをリスト化し、要素の追加等はできたのですが、要素を追加した後に内容を確認したいと思って
foreach文で各リストの独自クラスの中身を抜き出そうとしたのですが上手くいかずに困っています。
異なる型を持った独自クラスの中身をforeachのようにループ処理で抜き出すことは可能でしょうか?
該当のソースコード
例として以下のような独自クラスがあり、これをリスト化したProductListが複数の異なる要素を持っているとした場合、
どのようにすれば可能でしょうか。
cs
1 public class CustumData 2 { 3 public int Value{get; set;} 4 public int Quantity{get; set;} 5 public string ProductName{get; set;} 6 } 7 public List<CustumData> ProductList; 8 9 ProductListの中身は例として以下のような状態とする。 10 ProductList[0] = 5,10,pen 11 ProductList[1] = 2,7,desk 12 ProductList[2] = 8,45,watch 13 ProductList[3] = 14,3,sword 14 15 foreach(var a in ProductList) 16 { 17 各ProductList[n]の中身をすべて出力したい 18 } 19
試したこと
Debug.Log(a.Value + " / " + a.Quantity + " / " + a.ProductName);
とすれば表示できるとは思いますが、独自クラスの要素数が増えた場合ひとつひとつを追記する手間があるため
これ以外の方法で一括で処理できればいいなぁと思っています。
補足情報(FW/ツールのバージョンなど)
Unity 2019 1.41f
「すでに複数の異なるCustuDataを持っているとする」という文の意味がよく分かりませんでした。
何が「異なる」のでしょうか。
各要素が持つメンバーの値が異なるだけなら、foreachでメンバーの中身にアクセスすれば良いだけです。
ProductListに入っている要素は全てCustomData、もしくはそれを継承したオブジェクトではないのでしょうか。
>独自クラスの要素数が増えた場合ひとつひとつを追記する手間があるためこれ以外の方法で一括で処理できればいいなぁと思っています。
これ以上省略は難しいと思いますが、例えばどういうノリでコードを書ければよいでしょうか。
foreach という単語が出ているので foreach で各要素の中身を表示する方法を聞いているのかと思っていましたが、真の質問は「オブジェクトが持つ全てのメンバーの値を楽に表示する方法がないか」ということで良いでしょうか?
質問ありがとうございます、分かりにくい表現ですみません。
>「すでに複数の異なるCustuDataを持っているとする」という文の意味がよく分かりませんでした。
私が考えていた意味は以下のような状態です。
ProductList[0]の中身は5,10,pen
ProductList[1]の中身は2,7,desk
ProductList[2]の中身は...etc
という風にデータが入っている状態を想定しています。
なのでProductListはすべてCustuDataを継承しています。
>これ以上省略は難しいと思いますが、例えばどういうノリでコードを書ければよいでしょうか。
理想的な形はCustuData内の要素が増えた際にも、出力部分は追記なしで対応できればと思っています。
なのでループ処理で表記できないものかと思い、質問させていただきました。
以下はこうしたいという理想のコードです。
foreach(var a in ProductList)
{
foreach(var aa in a)
{
Debug.Log(aa);
}
}
>真の質問は「オブジェクトが持つ全てのメンバーの値を楽に表示する方法がないか」ということで良いでしょうか?
そうですね、独自クラスの異なる型のすべての要素を楽に取り出して表示できるか、というところが知りたいです。
回答3件
あなたの回答
tips
プレビュー