§ ITPOW >> 文档 >> C#

为什么无法修改类中的 struct 的属性?

作者:vkvi 来源:ITPOW(原创) 日期:2012-11-8

如果有一个类叫 Car,其中有一个属性 Rectangle(是个结构),那么以下是错误的,将得到“无法修改...的返回值”的属性。

为什么呢?因为 Rectangle 是个结构,不是按地址传递的,也就是说第二、第三句使用 Rectangle 时,根据属性的 get return 语句,实际返回的是 Rectangle 的副本,而再使用 Width、Height 时,实际使用到的是副本的。

所以将无法设置真正的 Car 的 Rectangle 值,所以微软干脆禁止为类中 struct 属性的属性赋值。

解决办法

法一、改 Rectangle 为 class。

法二、若不能或不该改 Rectangle 为 class,则直接为 Rectangle 整个赋值,比如:

相关文章