[英]C# : using a variable when being passed it's string name
因此,如果將變量的字符串名稱傳遞給方法,則我知道要使用哪個變量。
在下面的示例中,我需要幫助的區域是PrintVar(string)...將string參數轉換為變量...,以便分別打印出“ here be variable 1”和“ here be variable 2”。 。謝謝!
class ReflectionTest
{
class MyObj
{
private string myvar;
public MyObj(string input)
{ this.myvar = input; }
public override string ToString()
{ return ("here be " + myvar); }
}
class MyClass
{
private MyObj var1;
private MyObj var2;
public MyClass()
{
var1 = new MyObj("variable 1");
var2 = new MyObj("variable 2");
}
public void PrintVar(string theVariable)
{
Console.WriteLine(theVariable);
}
}
static void Main()
{
MyClass test = new MyClass();
test.PrintVar("var1");
test.PrintVar("var2");
}
}
如果您需要按名稱獲取內容,那么就個人而言,我將在內部實現中使用字典開始,即
private readonly Dictionary<string,MyObj> fields =new Dictionary<string,MyObj>();
public MyClass()
{
fields["var1"] = new MyObj("variable 1");
fields["var2"] = new MyObj("variable 2");
}
public void PrintVar(string fieldName)
{
Console.WriteLine(fields[fieldName]);
}
另一個選項是反射( GetType().GetFields()
):
public void PrintVar(string fieldName)
{
Console.WriteLine(GetType().GetField(fieldName,
BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.