我在调用自己制作的方法时遇到问题。
我要调用的方法如下
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/