将 null 传递给方法是否可接受

2023-11-26

Null 对我来说是一种奇怪的数据类型,似乎使用它是错误的,也许是我作为初学者经常遇到的空指针错误,现在让我将任何 null 实例与某种邪恶联系起来!

无论如何我的问题是

在某些情况下可以使用 null 作为参数吗?例如,一个方法可能需要a和b来完成一项任务,但在某些情况下它可能只需要a。在这些奇怪的实例中,对 b 进行 null 解析并检查 if(b==null) 是否可行,然后我们知道它是什么?

还是我在这里的方式?

我必须承认,让我想知道这是否可以接受的是,所讨论的方法可能被过度使用,但整个方法可能会有 5 或 6 行的差异。这让我担心代码重复。


通过是绝对没问题的null到方法。但是,如果您有一个可能不需要传递变量的 csae,请考虑超载.

您可能传递 null 的原因是因为您可能有一个带有相当多参数的方法,并且您不想实现所有可能的重载。

我个人会not use 可选参数- 由于问题,关于这个主题有很多讨论方法作为契约这超出了这个问题的范围。


UPDATE

正确的方法不是重复代码,而是让重载互相调用:

public void Foo(A a)
{
    Foo(a, null);
}
public void Foo(A a, B b)
{
        // .......
}

这将告诉客户端此代码:

  • 您只能使用 A 来调用方法
  • 您可以使用 A 和 B 调用方法

如果我只有第二种方法的话客户不知道是否可以通过null.

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

将 null 传递给方法是否可接受 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 使用 C# 读取 Soap 消息

  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且

随机推荐

  • TypeScript 类型不适用于扩展运算符

    我有一个 redux 风格的减速器 我正在使用 ngrx 它返回特定类型 当我在返回对象中使用展开运算符时 打字稿 linter 不会捕获无效属性 这是我的界面 interface MyState firstName string last
  • 框架内元素的选择器(具有相同的原点)

    我有一个具有以下结构的网页 index jsp包含 div test is here div 我需要一个 jQuery 选择器来直接访问div test 到目前为止我只能这样写 frames 0 document body 或这个 fram
  • 将 ARFaceGeometry 保存到 OBJ 文件

    在 iOS ARKit 应用程序中 我一直在尝试保存ARFaceGeometry数据到 OBJ 文件 我按照这里的解释 如何从 AVDepthData 制作 3D 模型 但是 OBJ 未正确创建 这是我所拥有的 func renderer
  • 在休眠中使用 inverse true

    我正在浏览 hibernate 文档并遇到了逆属性的概念 我是 Hibernate 的新手 所以我觉得很难正确理解这个概念 http docs jboss org hibernate orm 3 3 reference en US html
  • 在自定义 ListAdapter 类中显示 AlertDialog

    我很难处理显示AlertDialog自定义内ListView扩展了一个类BaseAdapter AlertDialog Builder alertbox new AlertDialog Builder getParent getApplic
  • 如何获取 Cassandra 中最后插入的行?

    我想获取 Cassandra 表中最后插入的行 如何获得 任何想法 我正在开发一个项目 用 cassandra 替换 mysql 我想摆脱所有 sql 查询并将它们全部写在 cassandra 中 只是为了传达一点理解 与所有 Cassan
  • 如何继承方法但具有不同的返回类型?

    给定以下课程 ClassA public ClassA DoSomethingAndReturnNewObject ClassB ClassA ClassC ClassA 有没有办法得到ClassB and ClassC继承方法但将返回类型
  • 如何在Delphi中使TImage透明?

    在表格上我有两个 TImage 顶部的 TImage 应该是透明的 这样我们就可以看到下面的内容 如何更改 TImage 透明度级别 Example 通常的方法是将所有图形绘制到一个目标画布 可以是 TImage 的位图 但即使有许多重叠的
  • iOS 7中UISearchDisplayController的全屏后台拦截触摸事件

    我有一个UITableview不占据整个屏幕 截屏 在 iOS 6 中一切正常 但是在 iOS 7 中 当用户搜索时 搜索结果表占据了整个视图 截屏 为了解决这个问题 我尝试按照中所述手动设置框架这个答案 现在外观是正确的 截屏 但现在显示
  • 如何将内存中的wav文件转换为mp3?

    我有一个在 Asp Net MVC 5 框架之上使用 C 编写的应用程序 我的目标是调用第三方服务来下载波形文件 然后我想把这个文件转换成mp3 最后 我想将 mp3 文件返回为 byte 以允许用户直接从内存下载它 这是我的代码最终的结果
  • 如何在每次推送提交时运行 GitHub 工作流程

    我有一些测试 我想在我的存储库的每次提交上运行 我的仓库中有以下脚本 name CI on push jobs build runs on ubuntu latest steps uses actions checkout v2 run e
  • 从内容提供者返回内存映射的InputStream?

    在内容提供者消费者的客户端 我可以执行以下操作 以获得用于读取图片的正确输入流 InputStream is getContentResolver openInputStream pictureUri 这是一个很好的 API 并且在服务器端
  • 无法在测试中将应用程序委托强制转换为应用程序委托

    我正在 Swift 中进行单元测试 并且遇到了问题 每次运行测试时 我都会收到错误 Could not cast value of type app AppDelegate to app Tests AppDelegate 我确保 AppD
  • 将 json 数组转换为 java 列表对象 [重复]

    这个问题在这里已经有答案了 我得到了一个json数组从服务器response id 1 name John age 20 id 3 name Tomas age 29 id 12 name Kate age 32 我想用gson将上面的js
  • Ionic:IOS 11 中 wkwebview 底部的空白

    将 IOS 更新到 11 版本后 我遇到了问题wkwebview plugin在我的应用程序中 Ionic 命令发布 iOS 11清单但问题是在清单中的所有步骤之后仍然存在 ios平台版本4 4 0 任何 SIM 卡 iPhone 5s 6
  • 收到响应后使用 Chrome webRequest 进行 URL 转发

    我正在尝试创建一个利用 Chrome 的 Chrome 扩展网络请求模块执行重定向到从最初访问的 URL 获得的 URL 为此 我只想使用 Chrome 的 webRequest 函数 例如 onBeforeSendHeaders onHe
  • 随机失败的测试笑话和超级测试 Node.js

    长话短说 我正在开发 RESTapi 它在 movies 路由的 POST 请求上获取电影标题 从外部 api 获取有关该电影的信息并将该对象保存到数据库中 在 POST comments 上 您将评论添加到不同的集合中 但每个评论都有一个
  • Kepler 中的 L2 缓存

    就引用局部性而言 L2 缓存在具有 Kepler 架构的 GPU 中如何工作 例如 如果一个线程访问全局内存中的某个地址 假设该地址的值不在二级缓存中 那么该值是如何缓存的 是暂时的吗 或者该地址的其他附近值是否也被带到二级缓存 空间 下图
  • 如何在生产环境中设置 ASP.NET 5 环境变量

    在 Visual Studio 2015 中 您在项目属性中设置以下变量 ASPNET ENV 如果将其设置为开发 则可以使用 public void Configure IApplicationBuilder app IHostingEn
  • 将 null 传递给方法是否可接受

    Null 对我来说是一种奇怪的数据类型 似乎使用它是错误的 也许是我作为初学者经常遇到的空指针错误 现在让我将任何 null 实例与某种邪恶联系起来 无论如何我的问题是 在某些情况下可以使用 null 作为参数吗 例如 一个方法可能需要a和