gpt4 book ai didi

c# - 属性或索引器不能作为 out 或 ref 参数传递

转载 作者:IT王子 更新时间:2023-10-29 03:41:25 27 4
gpt4 key购买 nike

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

场景:

我有一个 BudgetAllocate 类,它的属性是 budget,它是 double 类型。

在我的 dataAccessLayer 中,

在我的一个类(class)中,我正在尝试这样做:

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

这是抛出这个错误:

Property or indexer may not be passed as an out or ref parameter atcompile time.

我什至试过这个:

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

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

最佳答案

其他人已经为您提供了解决方案,但至于为什么这是必要的:属性只是方法的语法糖。

例如,当您使用 getter 和 setter 声明一个名为 Name 的属性时,编译器实际上会生成名为 get_Name()set_Name 的方法(值)。然后,当您读取和写入此属性时,编译器会将这些操作转换为对那些生成的方法的调用。

当您考虑这一点时,为什么不能将属性作为输出参数传递就变得很明显了——您实际上传递的是对方法的引用,而不是对的引用一个对象一个变量,这是输出参数所期望的。

索引器也存在类似情况。

关于c# - 属性或索引器不能作为 out 或 ref 参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com