在类中,当属性为一个结构时会出现的问题

本文通过一个具体的示例说明了在C#中使用结构(struct)与类(class)的区别,特别是当作为属性返回时的不同行为,并给出了如何避免常见错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知,结构是一个值变量,而不是引用变量,但具体应用时,却未必会想到这个问题,例如这样一个例子:

看上去没有什么问题,但是真正用的时候,却可能会出现意想不到的问题,例如我这样来设置Config属性:

 

看上去也没什么问题,但事实上,运行程序时,会报错,"错误 1 无法修改“DbfIO.Config”的返回值,因为它不是变量",这是为什么呢?

其实就是因为DbConfig是结构的原因,结构是值变量,那么dbf.Config属性返回的值其实与类内容的config变量没什么关系,是一个新的值,而并不是引用了config,所以对它赋值即使成功,类内部的config对应的TableName的值也并没有发生变化,所以编译时会直接提示错误。

那么怎么解决这个问题?其实很简单,就是将struct改成class

问题解决,这时,dbf.Config就是引用内部config变量的内容,db.Config.TableName赋值成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值