反射によって変数値を変数名自体に変換
8299 ワード
これはNET反射の興味深い小例:反射によって変数値を変数名そのものに変換する.
もちろん名前空間:using Systemを追加します.Reflection;
サンプルコードは次のとおりです.
コードがかなりはっきりしているので、あまり説明しません~
本明細書のアドレス:http://www.cnblogs.com/Interkey/p/3460566.html
.NETの反射は、反射の概要または.NETにおける反射メカニズムの使用と分析を参照してください.
.NET反射は実行効率が比較的遅いが,ソフトウェアの解読過程では非常に大きな役割を果たす.ここは心ある人に残しておきます~
この文書のコードはアタッチメントにアップロードされました.
以下の記事を参照してください.
C#で文字列を変数名に変換
クラスに文字列で反射されたインスタンス
文字列は変数名に変換され、文字列によって変数に値が割り当てられます。
面白そうなので、皆さんに分かち合います~
あと、面白いと思ったらチョイス~
もちろん名前空間:using Systemを追加します.Reflection;
サンプルコードは次のとおりです.
class Program
{
string name = "strA";
string strA = "strB";
string strB = "Hello World~";
static void Main(string[] args)
{
Program p = new Program();
p.GetTypeValue();
p.GetStrValue(p.name);
p.SetStrValue(p.strA);
Console.ReadKey();
}
// :http://www.cnblogs.com/Interkey/p/3460566.html
/// <summary>
/// FieldInfo
/// </summary>
void GetTypeValue()
{
Console.WriteLine("Method: GetTypeValue");
FieldInfo[] fis = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
foreach (FieldInfo fi in fis)
{
Console.WriteLine(fi.Name + " :" + fi.GetValue(this).ToString());
}
Console.WriteLine();
}
/// <summary>
/// str
/// </summary>
/// <param name="str"></param>
void GetStrValue(string str)
{
Console.WriteLine("Method: GetStrValue");
Type type = this.GetType();
// str
Console.WriteLine(type.GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this).ToString());
Console.WriteLine(
type.GetField(
type.GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this).ToString(),
BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this).ToString()
);
Console.WriteLine();
}
/// <summary>
/// str
/// </summary>
/// <param name="str"></param>
void SetStrValue(string str)
{
Console.WriteLine("Method: SetStrValue");
//
Console.WriteLine(this.GetType().GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this));
//
this.GetType().GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).SetValue(this, "Hello Interkey~");
//
Console.WriteLine(this.GetType().GetField(str, BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this));
Console.WriteLine();
}
// :http://www.cnblogs.com/Interkey/p/3460566.html
}
コードがかなりはっきりしているので、あまり説明しません~
本明細書のアドレス:http://www.cnblogs.com/Interkey/p/3460566.html
.NETの反射は、反射の概要または.NETにおける反射メカニズムの使用と分析を参照してください.
.NET反射は実行効率が比較的遅いが,ソフトウェアの解読過程では非常に大きな役割を果たす.ここは心ある人に残しておきます~
この文書のコードはアタッチメントにアップロードされました.
以下の記事を参照してください.
C#で文字列を変数名に変換
クラスに文字列で反射されたインスタンス
文字列は変数名に変換され、文字列によって変数に値が割り当てられます。
面白そうなので、皆さんに分かち合います~
あと、面白いと思ったらチョイス~