在财产与现场辩论中,总是出现的一点是"将变量更改为属性是一个重大改变。"
考虑我有一个使用库的应用程序。在图书馆里我有一个interger字段" Car.MaxSpeed",我将其更改为属性。如果我创建应用程序的下一个版本,代码仍然引用" Car.MaxSpeed"。所以在使用它的地方,应用程序仍然会收到一个int。代码不需要更改为访问属性而不是字段。
我知道这会混淆应用程序中使用的反射,但反射总是被列为属性与字段辩论中的一个单独点。
那么实际上是什么"打破"?
编辑: 这被标记为another question的副本,因此它要求我编辑它。我认为很明显(我认为不那么出色)答案"属性可以抛出任意的异常"不回答我的问题。哎呀,即使你只阅读了这2个问题的标题,你也应该注意到它们之间的区别。
答案 0 :(得分:2)
突破性变化意味着需要重新编译项目。
您可能有一个设置,通过Visual Studio项目引用在应用程序项目中引用您的类库项目。使用此设置,您将无法看到重大更改,因为只要您构建控制台应用程序,它就会从类库中选择更改,因为依赖项目也必须构建。
要查看实际的突破性变化。执行以下步骤:
dll
文件。通过这些步骤,您将看到以下错误:
未处理的异常:System.MissingFieldException:找不到字段: //字段名称
现在这是一个突破性的变化。尝试相反的过程。创建一个属性,然后将其更改为字段。看看它的行为方式。
您将获得例外:
未处理的异常:System.MissingMethodException:找不到方法: