前提・実現したいこと
Unity,C#を使っています。
クラスの中身の変数を文字列で指定して扱いたいです。
通常、「cList.Character1」みたいな形で扱えると思うのですが、Character1という部分を文字列型を使って扱いたいです。
何かいい方法がありますでしょうか。
何卒、ご教授願いたいです。
該当のソースコード
public class CharacterList { public int Character1; public int Character2; public int Character3; } public void Start() { CharacterList cList = new CharacterList(); cList.Character1 = 1; cList.Character2 = 1; cList.Character2 = 0; string str = "Character1"; //文字列を使ってクラスの変数を参照したい cList.str //←みたいな //↓と同じ結果にしたい cList.Character1 }
> //↓と同じ結果にしたい
どういうことかよくわかりませんでした。もう少し詳しく書くと、cList.Character1とソースコードに書いただけではコンパイルエラーになります。ですから、それと同じ結果にしたいというのはよくわかりません。
> cList.str
こちらも正直なところよくわかっていませんが、恐らく "Character1" という値がほしいという例示で書いたということで合っているでしょうか
フィールドを文字列として取得したいということで良いでしょうか。
cList.Character3 なら "Character3" が取得したいという話だと認識しています。
リフレクションを使ってできる話ではあるけど、そもそも何を目的にしてそれをやろうとしてるんだろう。
変数名にプログラム上の意味を持たせるのはアンチパターンもいいところだけど、何もわかってない初心者ほどやりたがる印象がある。
なぜそれが必要だと思ったのか、そのやりたいことを実現する方法は他にないのか、という視点で質問すれば、そもそもそんな事をやる必要がない、という結論になりそう。99.99999%ぐらいの確率で。
XY問題の可能性は大いにありますね。
なんで皆さんこういう発想になるんでしょうね?
初心ははるか昔なのでどうにも想像できないのですが^^;
teratail内でUnityに限っても、ざっとこれくらいは見つかりました。
[C# - Unity C# 変数名に文字列を使って参照したい|teratail](https://teratail.com/questions/36198
[C# - C#において文字列で指定したクラスのメンバ変数を呼び出す方法|teratail](https://teratail.com/questions/49353
[C# - 【C#】連番付きの変数をループで処理したい。|teratail](https://teratail.com/questions/63570
[C# - unityでプロパティに動的変数でアクセスしたい|teratail](https://teratail.com/questions/93422
[C# - [Unity] あるstringの文字列と同じ変数名の変数を取得したい|teratail](https://teratail.com/questions/138016
[C# - 文字列を既存の変数名として扱いたい|teratail](https://teratail.com/questions/173619
[C# - 文字列を組み合わせて変数の中身を取得したい。|teratail](https://teratail.com/questions/224183
[C# - stringの文字列と同名の変数をstruct内から編集したい|teratail](https://teratail.com/questions/229896
[Unity - 文字列で指定したフィールド名のゲームオブジェクトを取得したい|teratail](https://teratail.com/questions/293579
[Unity - unity c# 変数名を変数を使って指定|teratail](https://teratail.com/questions/318656
[C# - Unity 変化する文字列を変数名として、代入をしたい|teratail](https://teratail.com/questions/319398
Character1の数字の部分をループで変化させれば順番にアクセスできるんじゃない?
って考えるのだと予想します。
「配列」という言葉は知っていても、どうやって使うかどういう時に使うべきなのかが分からないんじゃないですかね?
コレクションクラスの存在を知らない可能性はありますね。
いずれにせよ、こういう所で質問する前に、入門書等からきちんと段階踏んで基礎を学習した方がいいとは思いますが。
earth545 さん、GetProperty でどのように解決したんでしょう。Character1 はプロパティではなくフィールドなので解決しているかどうか疑問です。
回答3件
あなたの回答
tips
プレビュー