微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 使用get vs property vs方法

参见英文答案 > Exposing Member Objects As Properties or Methods in .NET                                    7个
如果我在课堂上有私人财产,我想知道在以下三种情况(内存使用,可用性,最佳实践等)之间的区别是什么:

class testClass
{
     private string myString1 = "hello";

     private string myString2 { get { return "hello"; } }

     private string myString3() { return "hello"; }
}

除了显然能够设置myString1中的值而不是myString2或myString3中的值之外,我想知道更多关于它们在效率方面有何不同?

解决方法

所有这些方法在编译时都非常不同,尽管在使用方面非常相似.我将简要总结一下这些差异:

>这是一个简单的私有实例变量.在引用时,它很容易变得最有效.
>这是一个只读属性(即get但没有set访问器).
>这是一个正常的无参数功能.我怀疑你只是提供这些例子纯粹作为比较点,并意识到这样的功能是完全无用的(在几乎所有情况下都是私有属性).布局(即一条线上的所有东西)也相当可怕.

与1相比,方法2和3将同样效率低,因为它们都涉及函数调用的开销.我不知道他们都编译到的CIL代码(也许其他人可以生成它),但它们肯定涉及更多的指令,而引用myString1应该只需要CIL中的单个指令.

我不确定如何在不了解更多关于上下文的情况下对最佳实践做出非常有用的评论,但方法2(即私有财产)通常被认为是无用的.在我看来,第三种方法永远不应该被使用(它要求变成一种财产).我认为你真正想要的只是一个普通的旧私有变量,所以一定要去做第一个声明.公共值应始终作为属性而不是类中的变量(即属性的私有/受保护的后备变量)进行访问,但这与您的问题略有不同. (无论如何,你可以找到很多资源在快速搜索中讨论这个问题.)最后,请注意,如果你的“属性”是只读的(即在任何时候都没有修改),你真的想要使用常量,即私有const字符串myString1 =“hello”;.

希望有助于澄清一些事情.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐