質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

3回答

25238閲覧

Unity C# 変数名に文字列を使って参照したい

nico29

総合スコア76

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

1グッド

1クリップ

投稿2016/05/27 07:48

初めて質問させて頂きます。
ActionScriptしか使ったことがない、Unityを使い始めたばかりの初心者です。
C#で作成しております。

###やりたいこと
他のクラスで定義した変数に、文字列を用いた変数名でアクセスをしたいのですが、どうすればよいでしょうか?

例えば、Globalというシングルトンのクラスに、hoge_aという変数があるとします。
この変数に別のクラスからアクセスするには、下記のような書き方になると思うのですが、

Global.instance.hoge_a

この変数名を "hoge_"+str というふうに、文字列などを組み合わせて参照したい場合は、どう書けばいいでしょうか?
ActionScriptでいうところの this["hoge_"+str] のような感じです。

宜しくお願いいたします。

Ans👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Dictionaryを使うのはいかがでしょうか。

c#

1Dictionary<string, int> dic = new Dictionary<string, int>(); 2dic.Add("hoge_a", 1); 3dic.Add("hoge_b", 2); 4dic.Add("hoge_c", 3); 5 6string suffix = "a"; 7 8Console.WriteLine(dic["hoge_" + suffix]);

投稿2016/05/27 08:07

gusao

総合スコア185

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/05/27 08:14

あわわ、被っちゃいました。すいません。
nico29

2016/05/27 09:14

お返事ありがとうございます。 Dictionaryという便利なものがあったんですね! ソースコードまで、解りやすく教えて下さって、ありがとうございます。 Dictionaryを使ってみようと思います。
guest

0

この変数名を "hoge_"+str というふうに、文字列などを組み合わせて参照したい場合は、どう書けばいいでしょうか?

そのままで行けるのでは??

C#

1String str = "文字列連結"; 2String connect_str = Global.instance.hoge_a + str;

もし、質問してることが違ったらもう少し詳しく説明をお願いします。(ソースコードこみで)

投稿2016/05/27 08:04

編集2016/05/27 08:08
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nico29

2016/05/27 09:10

お返事ありがとうございます。 問題部分のソースコードの書き方がわからなくて、うまく説明できていなくて申し訳ございませんでした。 無理やり表現するならば、 Global.instance."hoge_"+str といった感じで、 str="a" ならば、Global.instance.hoge_aの値を参照する。 str="b" ならば、Global.instance.hoge_bの値を参照する。 といったように、該当する変数の値を参照したかったのです。 今回は、教えていただいたDictionaryを使ってみることにしました。 ご回答ありがとうございました。
guest

0

こんにちは。

C#にはリフレクションがあるので、これを使えば可能です。
ただし、C#の主要機能という位置づけではないので、使い方は難しいですし、速度も遅いです。
可能であれば、リフレクションを使わない方が可読性も高く速度も速いことが多いです。
例えば、Dictionaryを使うことはできないでしょうか?

投稿2016/05/27 08:00

編集2016/05/27 08:13
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nico29

2016/05/27 08:54

お返事ありがとうございます。 リフレクションというものを初めて知りました。 リンクまで貼ってくださってありがとうございます。 メタ情報を利用する感じでしょうか。 リンク先のページを拝見しましたが、初心者の私にはハードルが高そうなので、教えていただいたDictionaryを使おうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問