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

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

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

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

Unity

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

Q&A

3回答

730閲覧

変数結合した変数に代入できるか?

gesunokiwami

総合スコア17

C#

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

Unity

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

0グッド

0クリップ

投稿2022/01/07 12:15

int id1 = 0; int id2 = 0; int id3 = 0; int id4 = 0; for (int i = 1; i <= 4; i++) { id.i = i; }

理想
id1 = 1;
id2 = 2;
id3 = 3;
id4 = 4;

上記のようなことをやりたいのですが、可能なのでしょうか?

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

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

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

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

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

guest

回答3

0

上記のようなことをやりたいのですが

よほど理由がない限り、配列を使うべき場面です。

投稿2022/01/07 12:20

maisumakun

総合スコア145184

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

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

0

お遊びでやってみました。

unsafe ならいける!と思ったら意外な結果に・・

C#

1static void Main() { 2 int id1 = 0; 3 int id2 = 0; 4 int id3 = 0; 5 int id4 = 0; 6 unsafe { 7 int* id = &id4; 8 for (int i = 1; i <= 4; i++) { 9 id[i - 1] = i; 10 } 11 } 12 Debug.WriteLine("{0},{1},{2},{3}", id1, id2, id3, id4); 13} 14結果 154,3,2,1

ローカル変数の並びは逆になってるんですね。
あくまでお遊びです。使ってないローカル変数はコンパイラが削除することもあるのでやってはいけません。

C#

1[StructLayout(LayoutKind.Sequential)] 2unsafe class UnsafeTest 3{ 4 int id1 = 0; 5 int id2 = 0; 6 int id3 = 0; 7 int id4 = 0; 8 public UnsafeTest() { 9 fixed (int* id = &id1) { 10 for (int i = 1; i <= 4; i++) { 11 id[i - 1] = i; 12 } 13 } 14 Debug.WriteLine("{0},{1},{2},{3}", id1, id2, id3, id4); 15 } 16} 17結果 181,2,3,4

これは予想通り

リフレクション

C#

1class ReflectionTest 2{ 3 int id1 = 0; 4 int id2 = 0; 5 int id3 = 0; 6 int id4 = 0; 7 public ReflectionTest() { 8 Type type = this.GetType(); 9 for (int i = 1; i <= 4; i++) { 10 var fi = type.GetField(string.Format("id{0}",i), BindingFlags.NonPublic | BindingFlags.Instance); 11 fi.SetValue(this, i); 12 } 13 Debug.WriteLine("{0},{1},{2},{3}", id1, id2, id3, id4); 14 } 15} 16結果 171,2,3,4

これも予想通り
でも配列を使ったほうがシンプルですよね。

投稿2022/01/08 08:05

KOZ6.0

総合スコア2626

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

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

0

使った事ないので全く分かりませんが、
System;
System.Reflection;
GetType.GetField.SetValue;
辺りで可能?

投稿2022/01/08 06:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Zuishin

2022/01/08 07:19

ローカル変数だとそれではできませんし、配列やリストで間に合うなら、リフレクションを使う場面でもありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問