输出参数麻烦

时间:2012-09-19 09:18:58

标签: c# .net

我在调用我已经制作的方法时遇到了问题。

我打电话给的方法如下:

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) 
  

ref或out参数必须是可赋值变量

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

3 个答案:

答案 0 :(得分:12)

变量需要与方法签名中指定的类型相同。你不能把它投在电话里。

表达式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;
}

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

答案 1 :(得分:2)

试试这个

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;
}

示例调用

int age;
a.GetValue<int>("age", out age);

答案 2 :(得分:0)

试试这个

object age; 
a.GetValue("age", out age);

int iage = (int)age;