我在调用我已经制作的方法时遇到了问题。
我打电话给的方法如下:
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参数必须是可赋值变量
其他人是否有这个问题,或者我只是做错了什么?
答案 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;