加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – 静态或私有

发布时间:2020-12-17 07:17:24 所属栏目:百科 来源:网络整理
导读:从VB中编程的第一天起,这就是我脑子里一直在徘徊的问题之一.我对此有自己的个人想法,但我想知道关于静态变量的使用的一般共识是什么. 静态变量: Public Function Whatever() as Boolean Static Flag as Boolean If not Flag then ' do something Flag = Tru
从VB中编程的第一天起,这就是我脑子里一直在徘徊的问题之一.我对此有自己的个人想法,但我想知道关于静态变量的使用的一般共识是什么.

静态变量:

Public Function Whatever() as Boolean
     Static Flag as Boolean
     If not Flag then
        ' do something
        Flag = True
     end if
     Return Something
End sub

VS:

私人变量:

Private Flag as Boolean
Public Function Whatever() as Boolean
     If not Flag then
        ' do something
        Flag = True
     end if
     Return Something
End 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内声明它.这可确保它具有单一责任,并且不会在其他地方不正确地访问.它还确保只有一个方法负责访问此对象.

因此,在您的情况下,最好的想法是将变量设置为函数静态(=局部)变量而不是对象私有变量.

根据我的经验,这确实相当罕见.但这是最好的做法.

(在性能/内存方面,这两种变体完全相同.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读