属性或索引器可能无法作为out或ref参数传递

我收到上述错误,无法解决。我用谷歌搜索了一下,但不能摆脱它。


场景:


我有类BudgetAllocate,其属性为double类型的budget。


在我的dataAccessLayer中,


在我的一堂课中,我试图做到这一点:


double.TryParse(objReader[i].ToString(), out bd.Budget);

哪个抛出此错误:


在编译时,属性或索引器可能不会作为out或ref参数传递。


我什至尝试了这个:


double.TryParse(objReader[i].ToString().Equals(DBNull.Value) ? "" : objReader[i].ToString(), out bd.Budget);

其他一切工作正常,并且存在层之间的引用。


跃然一笑
浏览 1983回答 3
3回答

千巷猫影

其他人为您提供了解决方案,但要说明为什么这样做是必要的:属性只是方法的语法糖。例如,当您声明Name使用getter和setter 调用的属性时,编译器实际上会生成称为get_Name()和的方法set_Name(value)。然后,当您读取和写入此属性时,编译器会将这些操作转换为对那些生成的方法的调用。考虑到这一点,很明显为什么不能将属性作为输出参数传递-实际上,您将传递对方法的引用,而不是对变量的对象的引用,这是输出参数所期望的。索引器也存在类似情况。
打开App,查看更多内容
随时随地看视频慕课网APP