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

vb.net – 将变量设置为“Nothing”是一个好习惯吗?

发布时间:2020-12-17 07:25:45 所属栏目:百科 来源:网络整理
导读:如果我有 Dim myRect As Rectangle = New Rectangle(0,100,100) 以后这样做是否有必要或者很好: myRect = Nothing 或者没有必要?谢谢. 如果有必要,还有其他情况不适合我的变量吗? 解决方法 一般来说,作为 Joel said,这是不必要的. 但是,在您的具体示例中,
如果我有

Dim myRect As Rectangle = New Rectangle(0,100,100)

以后这样做是否有必要或者很好:

myRect = Nothing

或者没有必要?谢谢.

如果有必要,还有其他情况不适合我的变量吗?

解决方法

一般来说,作为 Joel said,这是不必要的.

但是,在您的具体示例中,它实际上毫无意义. Rectangle是一个值类型,因此将其设置为Nothing甚至不会影响对象的引用计数;它为myRect变量分配一个新值(Rectangle的默认值).这类似于拥有一个Integer变量并在方法结束时将其设置为0.什么都买不到.

我应该指出,“将任何变量设置为Nothing [或在C#中为null]”的说法永远不会完成任何事情“*是一个神话.您可能在类中有一个字段,如果不再需要引用的对象但您仍然可以引用类实例本身,那么您也可以设置为null.

作为一个简单的例子,假设你有一个包装T []数组的容器类,你给这个容器一个Empty方法.在此方法中将容器的内部数组设置为null可能是有意义的,这将导致对数组对象的零引用,使其符合垃圾回收的条件. (然后,当外部代码尝试将T添加到集合时,您将创建一个新数组.)如果在Empty上没有将字段设置为null,那么仍然会有对数组的引用(即字段),这将是你真正不需要使用的少量内存.

就像我说的那样,这是一个简单的例子.老实说,你很少需要考虑这样的场景.我只是觉得我会提到它,以至于你没有得到错误的印象,即设置一个字段到Nothing字面上永远不会完成任何事情.

*我实际上并没有引用任何具体的人;这只是我听过不止一次的过度概括.

(编辑:李大同)

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

    推荐文章
      热点阅读