- PR -

[C#] 変数名をループの中で変えて使用したい

1
投稿者投稿内容
Qoo
常連さん
会議室デビュー日: 2006/05/18
投稿数: 37
投稿日時: 2006-05-29 17:38
いつもお世話になっています。

表題の通りC#で変数名を変えて使用したいのですが、例えば
TextBoxが10個あったとして、その中身を連結して一つの変数に入れたいとした場合

string str += TextBox[i].Text;

みたいな感じでループの中で変数名も動的に変えたいのですが
Flashであればeval関数みたいのがありますが、C#ではこういう事は
できるのでしょうか?
なせ
常連さん
会議室デビュー日: 2006/01/06
投稿数: 41
お住まい・勤務地: おおさか
投稿日時: 2006-05-29 18:04
Flashはよく知りませんが、

Qさんの仰っている
string str += TextBox[i].Text;

という表記法はそのままの形で使えますよ。
TextBoxの配列にして、初期値の設定を指定のTextBoxにしてやればオッケーです。

TextBox[] txt = new TextBox[]{textBox1,textBox2}
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-29 18:16
FindControl とか

じゃんぬさんのページ
http://jeanne.wankuma.com/tips/form/findcontrol.html
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-05-29 23:31
でもスレ元のコードをループで括ると、変数のスコープ外になってしまうので、string str はループの外に置きましょう。

#eval関数がどんなものかは知りませんが、Flash よりは高度なことができると信じたい初心者 CShaper でした。
Qoo
常連さん
会議室デビュー日: 2006/05/18
投稿数: 37
投稿日時: 2006-05-30 09:32
ありがとうございます。理解する事ができました。
今回、これを使って何かしたいという訳ではなかったですが、あれば
なにかに使えるかなと思って興味本位で質問させていただきました。
C#初心者で配列の[]の後に{}で何か書いてるのは何なんだろう?って
思ってましたが初期化してたんですね。Javaとかだとこういう書き方しないので
とまどいました。
まだまだ勉強不足です。
これからもお世話になる事多いと思いますがよろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-30 09:46
引用:

Qさんの書き込み (2006-05-30 09:32) より:

C#初心者で配列の[]の後に{}で何か書いてるのは何なんだろう?って思ってましたが初期化してたんですね。


いわゆる、「初期化子」ですね。

C# の場合は明示的に初期化子を指定する場合のみ使用すれば良いのですが、
VB の場合は配列を示す要素が、通常の括弧 () であるがために、必須だったりします。
(コンストラクタへの引数を示すのか、配列の要素を示すのか区別できないため)

引用:

Javaとかだとこういう書き方しないのでとまどいました。


Java にも、「初期化子」は一応ありますよ? (もちろん、J# も)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-05-30 09:46
>Javaとかだとこういう書き方しないので
>とまどいました。
Javaでもできたような。
Qoo
常連さん
会議室デビュー日: 2006/05/18
投稿数: 37
投稿日時: 2006-05-30 10:27
そうだったんですか。
いや、勉強不足が露呈して恥ずかしいですわw
まぁ、これからも頑張りたいと思ってますので
一つよろしくお願いしますね。
1

スキルアップ/キャリアアップ(JOB@IT)