ここから本文です

C#で変数名に変数を使う方法を教えてください。 ぜひよろしくお願いします。

yarebadekirusa3333さん

2015/6/2803:51:25

C#で変数名に変数を使う方法を教えてください。
ぜひよろしくお願いします。

閲覧数:
3,332
回答数:
7

違反報告

ベストアンサーに選ばれた回答

2015/6/2811:43:40

状況によってはリフレクションを使えば可能です。

例えば、フィールドとして

private int test1 = 1;
private int test2 = 2;
private int test3 = 3;

というのがあって、同じクラス内のとあるメソッド内で取得する場合、

for (int i = 1; i < 4; i++)
{
var testField = GetType().GetField("test" + i, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
if (testField != null)
{
Console.WriteLine(testField.GetValue(this));
}
}

とすれば、コンソールに1,2,3と表示されます。
(こんなことは普通しませんが)

ただし、VisualStudioなどでリファクタリング機能を使って名前を一括変更した場合などは対応できないのでおススメできません。


また、変数名を変数で・・・(良くあるのは上記のようなtest1,test2,test3の数値の部分を変数で動的に)というようなパターンは配列などで対応できることが多いです。

例えば、上記のtest1~3に同じ処理をぐるぐる回す際に、if分けで変数名をわざわざ書くのが大変!という単純なものでしたら

int[] tests = new[] { test1, test2, test3 };
foreach (int test in tests)
{
Console.WriteLine(test);
}

と配列に全部突っ込んでおいて、foreach文でぐるぐる回して処理すれば解決ですね。
(これも状況によって色んなやり方があります)

皆さんがおっしゃっている通り、質問者さんがどういった変数にどういった処理を行いたいか補足していただけると、もう少し詳しいアドバイスがつくかもしれませんね。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜5件/6件中

並び替え:回答日時の
新しい順
|古い順

fermiumbay2さん

2015/6/2819:01:26

連想配列でよくないですか。
Dictionary<string, int> vとか宣言して
v["変数の名前"]とかやれば名前つきint変数が作れます。

foobar7979さん

2015/6/2812:31:22

できません。

たぶん、JavaScript等のインタープリタ言語と同じことが
できるはずという期待値なのでしょうが、できないです。

強いて言えば、リフレクション が相当すると思うけど、
そんな手間なことをしたいわけじゃないと想像。

2015/6/2810:04:18

状況によって変数の名前を変えていきたいということでしょうかね?
そうすることでどんな意味があるのかがわかりませんけど。
もしくは、複数の変数を一括で同じ構文にぶちこみたいということでしょうか?
それなら、配列・インデクサーの利用、インターフェースの実装、ジェネリックの活用、あるいはリフレクションなどでどうにかなるかもしれませんね。
少なくとも、現状の課題を具体的に書いてもらわないことにはわかりません。

プロフィール画像

カテゴリマスター

2015/6/2809:30:47

このような事は出来ませんが、具体的にどのような事をしたいのかを質問してもらえば、望みの回答が得られると思います。

2015/6/2809:30:07

そういう方法はありません。ですが、何がやりたいのでしょうか?

変数名はプログラムの中で識別するために付ける名前であって、実行時に変数名が意味を持つことは普通はありません。

どういうことがやりたいのか、書いていただけると、別の方法を提案できるかもしれません。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。