为什么需要在c#中使用所有属性而不是公共实例变量?

汤玛士

我知道属性有一些优点,但是如果您认为不需要属性,将其设置为公共实例有什么害处?

人们说,如果以后再尝试将公共字段更改为属性,则会破坏代码,但以我的经验,将其更改为属性不会破坏代码。

罗德里戈

我认为人们的意思是它破坏了ABI(二进制)兼容性,而不是API(源代码)兼容性。

尽管语法是相同的,但是在后台,对属性的访问和对成员变量的访问的编译方式不同。

就是说,如果不使用您自己未编译的程序集使用变量/属性,则更改它不会有任何危害。但是,如果它是公共接口的一部分,则最好将其设置为一个属性,以使您将来不会后悔。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我需要在所有传递闭包中使用ConfigureAwait(false)?

为什么我需要在C#和PostgreSQL中使用Npgsql引用列和表?

为什么要在模型中使用私有变量?

为什么我需要在 C 中指定引用和指针而不是普通变量

为什么要在构造函数中实例化变量,以及为什么要使用属性来访问变量

为什么我需要在索引中使用下划线命名属性?

为什么在模块中使用实例变量而不是局部变量?

什么时候以及为什么需要在C ++中使用cin.ignore()?

C#Singleton具有公共“实例”字段而不是属性

为什么我有时需要在列表中使用 key()?

为什么需要在nodejs中使用path模块?

为什么我需要在 shareReplay 中使用管道?

为什么我需要在Android中使用super()?

为什么我需要在 Django 中使用 SlugField?

为什么我们需要在C ++头文件中使用“ #if defined Identifier”?

为什么需要在Objective-C中使用@property关键字?

为什么需要在Objective-C的头文件中使用“外部静态”来定义常量?

为什么要在JavaScript变量的名称中使用$(美元符号)?

为什么要在DI中使用`deps`属性

需要在Visual Studio(C#)中使用DLL的帮助

是否可以在 Java 中使用变量属性名称?如果不是,为什么?

为什么要在PowerShell中使用有序哈希?

为什么需要在类python(self.x = x)中使用带点的任何字符串带有self?

为什么在 C++ 中的其他文件中使用全局变量时需要 extern 而不是函数的前向声明

为什么不是所有变量都直接设置?

为什么要在C ++中使用嵌套类?

为什么要在C中使用静态函数?

为什么要在PHP或其他语言中使用动态变量(变量变量)

为什么在C#中没有括号的情况下不能在switch节中使用using变量?