众所周知,结构是一个值变量,而不是引用变量,但具体应用时,却未必会想到这个问题,例如这样一个例子:
看上去没有什么问题,但是真正用的时候,却可能会出现意想不到的问题,例如我这样来设置Config属性:
看上去也没什么问题,但事实上,运行程序时,会报错,"错误 1 无法修改“DbfIO.Config”的返回值,因为它不是变量",这是为什么呢?
其实就是因为DbConfig是结构的原因,结构是值变量,那么dbf.Config属性返回的值其实与类内容的config变量没什么关系,是一个新的值,而并不是引用了config,所以对它赋值即使成功,类内部的config对应的TableName的值也并没有发生变化,所以编译时会直接提示错误。
那么怎么解决这个问题?其实很简单,就是将struct改成class
问题解决,这时,dbf.Config就是引用内部config变量的内容,db.Config.TableName赋值成功!