【问题标题】:How can I assign a value to a variable by passing a string of its name?如何通过传递变量名称的字符串来为变量赋值?
【发布时间】:2017-01-02 12:22:12
【问题描述】:

例子:

int XValue;
int YValue;

void AssignValue(string VariableName,int VariableValue)
{
    VariableName = VariableValue;
}

void CallAV()
{
    AssignValue("XValue", 10);
    AssignValue("YValue", 15);

}

所以,基本上我想通过知道变量的名称来更改变量的值。

【问题讨论】:

    标签: c# function variables methods


    【解决方案1】:

    您要查找的内容统称为Reflection。具体来说,您想使用Type.GetField()。你可以这样做:

    void AssignValue(string VariableName, int VariableValue)
    {
        // Get the non-public instance variable (field)
        FieldInfo field = GetType().GetField(VariableName, BindingFlags.NonPublic | BindingFlags.Instance);
    
        // Set the variable's value for this instance of the type
        field.SetValue(this, VariableValue);
    }
    

    【讨论】:

    • 谢谢,效果很好。但是,如果这些变量的类型不同,可能 XValue 是 int 而 YValue 是 string 或 bool。如何更改方法参数以接受任何类型?
    • @Forenkazan 只需将参数列表中的int VariableValue改为object VariableValue即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多