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

2023-12-08

If I got

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

Is it 必要的要不就fine稍后执行此操作:

myRect = Nothing

或者说没有必要?谢谢。

IF这是必要的,还有其他情况不适合我的变量吗?


一般来说,如乔尔说,没有必要。

但在你的具体例子中,它实际上是无意义. Rectangle is a 值类型,所以将其设置为Nothing is not even影响对象的引用计数;它正在分配一个新的value(默认值Rectangle)到你的myRect多变的。这类似于有一个Integer变量并将其设置为0在方法的末尾。不给你买任何东西。


我应该指出,“将任何变量设置为Nothing [or null在 C# 中] 永远不会完成任何事情”* 是一个神话。您完全有可能有一个field在你不妨设置的课程中null如果不再需要引用的对象,但您仍然拥有对类实例本身的引用。

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

就像我说的,这是一个简单的例子。老实说,您很少需要考虑这样的场景。我只是想我会提到它,这样你就不会产生设置一个错误的印象field to Nothing从字面上看,永远不会完成任何事情。

*I'm not actually quoting anyone specific here; this is just an over-generalization I've heard stated more than once.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将变量设置为“Nothing”是一个好习惯吗? 的相关文章

  • 在 Matlab、VB6 和 VB.NET 程序之间发送消息的最简单方法

    我们正在将一套数据采集和分析例程从 VB6 程序升级为 VB NET VB6 和 Matlab 程序的混合体 我们希望保持系统模块化 单独的 EXE 以便我们可以轻松创建专门的独立分析程序 而无需不断升级大型应用程序 当所有程序都是用 VB
  • ASP.Net Web 应用程序 Jquery Photoviewer 和 Ajaxical 更新

    有一个错误我的网站 http new mnarfezhom com 请进入右数第三个菜单 有些图像只能通过 jquery photoviewer 显示 onlclick 这很好用 现在 当我单击页面底部的 Ajaxical 更新按钮时 问题
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • VB.NET 使用 system.net.tcpclient 编写 telnet 客户端

    当我连接到我的Solaris盒子时这对我不起作用 服务器正在回传 有谁知道我做错了什么 Imports System Net Imports System Net Sockets Imports System Text Public Cla
  • 如何用VB.net生成pdf文件?

    我想生成一个非常简单的报告 其中包含一些图像和文本 我想知道是否有一种方法可以使用 vb net 生成 pdf 文件 您可以使用 Visual Studio 附带的 Crystal Reports 对象导出到 PDF 文件
  • Haskell 程序的 -hc 配置文件中的 PINNED 是什么意思?

    我正在尝试分析我的应用程序 分析内存使用情况时 hcRTS 选项 我注意到很多内存标记为 PINNED 当与 hy内存被标记为ARR WORDS 该程序使用以下命令创建 2400 2400 双精度矩阵Data Packed Matrixhm
  • document.readyState == "complete" 始终为 false。状态始终是“交互的”

    我正在 Page Load 上连接一个启动脚本 JavaScript 函数来触发 如下所示 ScriptManager RegisterStartupScript Me GetType Page page init page init Tr
  • C# 中类实例的内存使用情况[重复]

    这个问题在这里已经有答案了 可能的重复 C NET 对象使用多少内存 https stackoverflow com questions 426396 how much memory does a c net object use 就像标题
  • 尝试关闭 Visual Basic 中所有打开的窗体

    我想要它 所以当单击我的按钮时 我退出我的应用程序 我尝试了一个简单的 for 循环 Private Sub CloseAllToolStripMenuItem Click sender As Object e As EventArgs H
  • Visual Studio 将 1.1 扩展为 1.1000000000000001

    至少对我来说 这是有史以来最奇怪的 Visual Studio 2010 行为 我正在开发 MVC3 项目 我从另一个项目 也包括 VS2010 MVC1 如果重要的话 复制了一行代码 如下所示 target height height 1
  • 使用 parse.com 并遇到分配内存问题

    我是编程新手 过去 3 个月我一直在制作应用程序 并学到了一些东西 但我还没有遇到如何解决这个问题 我一直使用 Parse com 作为我的服务器 发送图片 保存用户数据等 有了所有这些数据 如果我多次打开某些活动 特别是带有图片的活动 应
  • Windows 上任何单个进程可以寻址的最大内存量

    Windows 版本的内存限制 http msdn microsoft com en us library windows desktop aa366778 28v vs 85 29 aspx回答 Windows 上任何单个进程可以寻址的最
  • 只允许在 datagridview 单元格中键入一些字符

    有没有办法只将某些字符添加到 datagridview 单元格中 像 1234567890 据我所知 您可以使用两种方法来实现此目的 第一个 我认为最好的 是使用 CellValidating 事件DataGridView并检查输入的文本是
  • Razor 视图中的内联 If

    在我的控制器中 我有内联 If 语句 ViewBag NameSortParam If String IsNullOrEmpty sortOrder Name desc 在我看来 如果出现以下情况 我似乎无法使用内联 Code If Tru
  • 1 MB 或更多的 Java 字节数组占用 RAM 的两倍

    在 Windows 10 OpenJDK 11 0 4 x64 上运行以下代码会生成输出used 197 and expected usage 200 这意味着包含 100 万个元素的 200 个字节数组大约占用 200 个字节 200MB
  • 使用自定义验证器进行 ASP.Net 字数统计

    我正在处理的 ASP Net 2 0 项目的要求将某个字段限制为最多 10 个单词 不是字符 我当前正在使用带有以下 ServerValidate 方法的 CustomValidator 控件 Protected Sub TenWordsT
  • 查找 Obj-C 中对象实例的所有引用

    我正在尝试找出一些错误 其中之一与内存泄漏有关 我可以看出该对象仍然有一个引用 因为 Instruments 仍然将其显示为活动状态 但 Instruments 不会将其注册为泄漏 无论如何 有没有办法查看 Objective C 中对象的
  • 非托管代码调用 vb.net 回调

    我正在将处理 COM 对象事件的 vb net 应用程序 可能用 VB6 编写 从框架 1 1 升级到 WPF 2 0 3 5 代码 为简洁起见 简化了对象名称 public class MyClass Private WithEvents
  • 如何在 vb.net 中更改 DateTimePicker 的日期格式

    如何更改 vb net 中 DateTimePicker 的日期格式 以便日期以 dd mm 1990 格式显示 没有任何时间值 我尝试将格式更改为 短 虽然这提供了我需要的日期格式 但它不会删除时间 您需要将 DateTimePicker
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB

随机推荐

  • C函数内存分配

    在 C 语言中 函数何时分配以及它在内存中的何处 函数的内存是在第一次编译程序时分配的 还是在第一次看到函数调用时分配的 它是分配在堆栈上还是在代码段中 你的问题问得很好 但是要做好应对一些额外复杂性的准备 因为其中一些东西会接触到运行代码
  • 使用 AutoHotKey 查找并填写输入字段

    对所有 AutoHotKey 大师的挑战 给我们一个函数查找并移动光标到输入字段 例如登录名 或者发送输入文本 对于像我这样又老又懒的黑客来说 只是摆弄 AHK 它看起来像这样 FindFillField elementid sendtex
  • Javascript Array.some() 和 Array.every() 相当于 Set?

    在 JavaScript 中 是否有等价的Array some and Array every 为了Set内置对象 不 唯一的内置方法Set prototype are Set prototype add Set prototype cle
  • 从 &str 数组获取 Iterator

    我正在尝试抽象一个函数来获取两个实例std str Lines以及用于测试目的的模拟版本 由一系列创建 str 我的代码 确实有效 看起来像这样 use std fs test fn test day 1 let v 3 3 4 2 4 i
  • 如何解决“Newtonsoft.Json.JsonSerializationException无法找到用于类型的构造函数”Android错误?

    我正在使用 Unity3D 开发应用程序 我将我自己的实用程序 DLL 与一些类一起使用 我已经工作了几个月了 并且毫无问题地进行了很多构建 编译 上周向 DLL 添加了一个新类 它在我的 PC 中运行良好 但当我构建该项目并在我的 And
  • Pymunk 伺服关节

    如何在 Pymunk 中实现 伺服 关节 我正在尝试创建一个简单的模型 其中一个盒子在其下方的一条细 腿 上保持平衡 我已经能够创建一个盒子并使用PinJoint 但似乎没有任何方法可以控制连接连接到盒子的角度 我希望能够指定附着角度 其他
  • 在 scons 'Program' 命令中使用 'LIBS' 找不到静态库,为什么?

    我有一个 n c 作为主函数 o c 作为导入函数 如下所示 cat n c o c int f int main f return 0 include
  • 将节点附加到现有的 xml-Java

    我已经看到 vb 和 c 回答了同样的问题 但我需要一个 Java 最佳解决方案来将节点附加到 xml xpath 有帮助吗 我有 a b b a
  • 在 Ember.CollectionView 渲染结束时运行 jquery

    我有一个容器视图其中包含一个集合视图 在这之后集合视图呈现在屏幕上我需要执行jquery函数它本质上是查看渲染模板的内容并执行一些显示修改 如果我在插入元素 of 集合视图它可以工作 但它会针对中的每个元素执行集合视图因为我真的只需要在最后
  • 如何在气泡图中的 ggplot 2 中设置 geom_vline 和 geom_hline 的背景

    我想在气泡图上添加一条垂直线和一条水平线 而不过度绘制气泡 数据来了 a lt c np prepp vp animal artifact communication ipv isv b lt c 0 51 0 32 0 85 0 61 0
  • 正则表达式意外结束

    我只想从路径中获取带有扩展名的文件名 C Users anandada workspace MyTestProject src OpenTest c 以下声明 fileName re match c fileName 给出错误 正则表达式意
  • React.addons.createFragment 对象中元素的顺序

    我正在读https facebook github io react docs create fragment html文章中发现 FB 工程师依赖于对象内存布局 属性的顺序 if this props swapped children R
  • 如何在codeigniter中获取具有特定id的最后一条记录

    我这里有 2 张桌子 第一个是customer其次是会员资格 现在我只想得到一个特定的最后一条记录customer id从这些联合表 客户和会员 中 这是我的客户表结构 这是我的成员资格表结构和所需的最新插入行 这里我自己尝试了一个代码 r
  • 在Web浏览器中查找并单击html代码中没有ID的按钮

    我基本上有一个网络浏览器控件 它正在浏览并自动完成一些表单 到目前为止 这很容易 但是我已经得到了一个没有标有 ID 或 提交 或 重置 按钮的表单姓名 我需要能够同时单击两者 示例 提交按钮 td align right valign m
  • iCloud 是否需要在生产环境中才能在生产中使用?

    I added Cloudkit support to my iOS and WatchOS App but I cannot deploy my schema to production due to a bug Do I need to
  • javascript:从回调函数调用对象内部的函数

    当我尝试使用回调函数中的 this 调用对象内部的函数时 会发生错误 指出该方法未定义 我该如何解决这个问题 var object log user pass error message an error occured while con
  • 密码正则表达式必须包含至少 8 个字符,至少 1 个数字、字母和特殊字符

    我需要一个正则表达式 它应该至少有一个数字字符 允许大写和小写字母 也允许特殊字符我正在使用这个表达式 6 10 d a zA Z 但对于最大字符数 10 无效 看来你想要这样的东西 d a zA Z W 6 10 上述正则表达式仅允许 6
  • 选择数据库类型[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 何时使用 bigtabe simpledb 数据库与关系数据库 关系数据库为您提供了更多的布局和查询灵活性 并且更易于使用 但是如果您以后需要对数据进行分区 如果它不适合单个数据
  • 在装饰器模式中添加状态

    我想知道如何向消费者可用的装饰器链添加状态 鉴于这个简化模型 abstract class AbstractPizza public abstract print class Pizza AbstractPizza public int S
  • 将变量设置为“Nothing”是一个好习惯吗?

    If I got Dim myRect As Rectangle New Rectangle 0 0 100 100 Is it 必要的要不就fine稍后执行此操作 myRect Nothing 或者说没有必要 谢谢 IF这是必要的 还有其