我在调用自己制作的方法时遇到问题。

我要调用的方法如下

public bool GetValue(string column, out object result)
{
    result = null;
    // values is a Dictionary<string, object>
    if (this._values.ContainsKey(column))
    {
        result = Convert.ChangeType(this._values[column], result.GetType());
        return true;
    }
    return false;
}

我正在用此代码校准方法,但出现编译器错误
int age;
a.GetValue("age", out age as object)



还有其他人有这个问题吗,或者我只是做错了什么?

最佳答案

该变量必须是方法签名中指定的类型。您无法在通话中进行转换。

表达式age as object不是可分配的值,因为它是一个表达式,而不是存储位置。例如,您不能在作业的左侧使用它:

age as object = 5; // error

如果要避免强制转换,则可以尝试使用通用方法:
public bool GetValue<T>(string column, out T result)
{
    result = default(T);
    // values is a Dictionary<string, object>
    if (this._values.ContainsKey(column))
    {
        result = (T)Convert.ChangeType(this._values[column], typeof(T));
        return true;
    }
    return false;
}

当然,应在适当的地方插入一些错误检查)

关于c# - 没有参数的麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12491781/

10-09 02:29