静态变量:
Public Function Whatever() as Boolean Static Flag as Boolean If not Flag then ' do something Flag = True end if Return SomethingEnd sub
VS:
私人变量:
Private Flag as BooleanPublic Function Whatever() as Boolean If not Flag then ' do something Flag = True end if Return SomethingEnd sub
除非有人知道,否则上述功能上是等同的,除了“私人”标志暴露在课堂其他地方使用的事实.
Statics开始出现问题..比如…
它们存放在哪里..什么时候它们真正被创造和处置等
显然,编译器会以某种方式将它们添加到数据堆(我知道,这个词的错误用法)…但是在开销,垃圾收集等方面是否会受到惩罚.
一般来说,我像瘟疫一样避免它们,因为它们提出的问题多于答案.
是否真的有任何SolID理由使用静力学?
PS:希望这通过SO问题测试……
注意我并没有询问有关如何创建静态的详细信息.我更想问的是,如果ANYTHING使用静态值得做什么.
附录….
我做了一点研究,发现这很有启发性.
https://weblogs.asp.net/psteele/7717
解决方法Is there really any SolID reason to ever use statics?
是.它可以说是在SOLID的第一个字母中:S代表“单一责任原则”.在这个特定的上下文中,它是一个略有不同的规则:
07001
如果在范围X之外不需要对象,则应在范围X内声明它.这可确保它具有单一责任,并且不会在其他地方不正确地访问.它还确保只有一个方法负责访问此对象.
因此,在您的情况下,最好的想法是将变量设置为函数静态(=局部)变量而不是对象私有变量.
根据我的经验,这确实相当罕见.但这是最好的做法.
(在性能/内存方面,这两种变体完全相同.)
总结以上是内存溢出为你收集整理的vb.net – 静态或私有全部内容,希望文章能够帮你解决vb.net – 静态或私有所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)