我什么时候应该使用 out 参数?

2024-01-06

我不明白何时应该使用输出参数,如果我需要返回多个类型,我个人会将结果包装在新类型中,我发现使用它比使用 out 更容易。

我见过这样的方法,

   public void Do(int arg1, int arg2, out int result)

在某些情况下这实际上是有意义的吗?

怎么样TryParse,为什么不返回一个ParseResult类型?或者在较新的框架中返回一个可以为空的类型?


当你有一个TryNNN很明显,即使函数不成功,输出参数也始终会被设置。这允许您依赖于您声明的局部变量将被设置的事实,而不必稍后在代码中针对 null 进行检查。 (下面的注释表明该参数可以设置为null,因此您可能需要验证您所调用的函数的文档,以确定是否属于这种情况。)它使代码更清晰,更易于阅读。另一种情况是当您需要根据方法的条件返回一些数据和状态时,例如:

public bool DoSomething(int arg1, out string result);

在这种情况下,返回可以指示函数是否成功并且结果存储在输出参数中。诚然,这个例子是人为的,因为你可以设计一种方法,让函数简单地返回一个string,但你明白了。

缺点是您必须声明局部变量才能使用它们:

string result;
if (DoSomething(5, out result))
    UpdateWithResult(result);

代替:

UpdateWithResult(DoSomething(5));

然而,这甚至可能不是一个缺点,这取决于您想要的设计。对于 DateTime,提供了两种方法(Parse 和 TryParse)。

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

我什么时候应该使用 out 参数? 的相关文章

  • 访问“if”语句之外的变量

    我怎样才能使insuranceCost以外可用if陈述 if this comboBox5 Text Third Party Fire and Theft double insuranceCost 1 在 if 语句之外定义它 double
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • 矩阵向量变换

    我正在编写一个代码来制作软件蒙皮器 骨骼 皮肤动画 并且我正处于 优化 阶段 蒙皮器工作得很好 并且在 Core 上 1 09 毫秒内对 4900 个三角形网格与 22 个骨骼进行蒙皮Duo 2 Ghz 笔记本 我需要知道的是 1 有人可以
  • 如何使用 wpf webbrowser 将数据发布到 Web 服务器

    我想从数据库获取数据并使用它来让用户登录到网站 我有一个包含 Web 浏览器控件的 wpf 页面 我有这样的代码 用于将用户登录到用 php 编写的网站
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 防止GDB中的PLT(过程链接表)断点

    在最新版本的 GDB 中 在库函数调用上设置断点会导致多个实际断点 调用过程链接表 PLT 实际的函数调用 这意味着当调用库函数时 我们每次都会经历两次中断 在以前的 GDB 版本中 只会创建 2 因此您只能得到一次中断 那么问题来了 是否
  • 特征密集稀疏矩阵乘积是线程化的吗?

    我知道稀疏密集产品是根据文档进行线程化的 https eigen tuxfamily org dox TopicMultiThreading html https eigen tuxfamily org dox TopicMultiThre
  • dropdownlist DataTextField 由属性组成?

    有没有一种方法可以通过 C 使 asp net 中的下拉列表的 datatextfield 属性由对象的多个属性组成 public class MyObject public int Id get set public string Nam
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 系统错误 124 - SHFileOperation 的 ERROR_INVALID_LEVEL

    我在使用时遇到问题SHFileOperation SHFileOperation SHFILEOPSTRUCT https stackoverflow com questions 9191415 shfileoperation shfile
  • 从事务范围调用 WCF 服务方法

    我有这样的代码 using TransactionScope scope TransactionScopeFactory CreateTransactionScope some methodes calls for which scope
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • .NET JIT 编译的代码缓存在哪里?

    NET 程序首先被编译为 MSIL 代码 当它被执行时 JIT编译器会将其编译为本机机器代码 我想知道 这些JIT编译的机器代码存储在哪里 它只存储在进程的地址空间中吗 但由于程序的第二次启动比第一次快得多 我认为即使在执行完成后 该本机代
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • “int i=1,2,3”和“int i=(1,2,3)”之间的区别 - 使用逗号运算符的变量声明[重复]

    这个问题在这里已经有答案了 int i 1 2 3 int i 1 2 3 int i i 1 2 3 这些说法有什么区别 我无法找出任何具体原因 Statement 1 Result Compile error 运算符的优先级高于 运算符
  • 在 Java 服务器中验证 Windows 用户

    我正在开发一个用 Java 编写的服务器和一个在同一网络上的 Windows 计算机上运行的客户端 用 Net 编写的桌面应用程序 我希望进行一些基本身份验证 以便服务器可以确定运行客户端的用户的用户名 而不需要用户在客户端中重新输入其 W
  • Windows 服务:错误 5:访问被拒绝

    我正在尝试创建一个简单的 Windows 服务 该服务的用户帐户是NetworkService 然后我跑了installUtil从命令提示符我得到了这个 提交阶段完成 成功地 事务安装已完成 这意味着服务已成功安装 但是当我尝试从Servi
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t

随机推荐

  • PHP:open_basedir 允许的路径

    我有几个电话要打给is dir在一页上 他们一直工作没有问题 几天前 托管公司将PHP从5 2升级到5 3 从那时起 我所有的电话is dir导致以下错误 消息 Warning is dir open basedir restriction
  • OpenCV中是掩码按位与运算

    我从 python 中的 opencv 开始 我有一个关于如何应用 mask 的问题 bitwise and src1 src2 mask mask 以下哪一项描述了实现 A 全部按位 先屏蔽 src1 与掩码进行 与 运算 src2 与
  • Spring安全为所有角色名称添加了前缀“ROLE_”?

    我的网络安全配置中有以下代码 Override protected void configure HttpSecurity http throws Exception http authorizeRequests antMatchers a
  • FxCop 安装

    我正在尝试获取最新版本的 FxCop 我使用的是 Visual Studio 2010 Professional 版本 它不包含代码分析 因此我尝试使用 FxCop 进行设置 At http www microsoft com en us
  • 如何从 Python 3.10 反编译 .pyc 文件?

    我确实尝试过 uncompyle6 decompyl3 等 但它们都不适用于 3 10 现在是否有可能做到这一点 使用pycdc GitHub https github com zrax pycdc https github com zra
  • 在 Windows 上运行 MySQL 或 MariaDB 服务器的最少文件 - (便携式 MySQL/MariaDB)

    我正在寻找 MariaDB 或 MySQL 运行所需的最少文件 而无需像便携式服务器一样安装它 我更喜欢 MariaDB 而不是 MySQL 我想将它嵌入到用 Delphi 编写的软件中 我的软件将能够根据需要启动和停止服务器 我用谷歌搜索
  • Nivo 滑块:第一次显示时第一张图像缩放不成比例

    我在 div 中使用 Nivo Slider jQuery 插件 该 div 的尺寸比我正在显示的图像小 当滑块滑动到第二个图像时 图像上的图像会正确缩小 但是 当第一次显示第一个图像时 加载页面后立即 它仅在宽度上缩放 而在高度上不缩放
  • 如何重新映射 python 字典键

    我正在开发一个程序 该程序 除其他外 读取 CSV 文件 它以以下形式存储为字典数组 col1 data1a col2 data2a col1 data1b col2 data2b 对于每一行 作为其他处理的一部分 我需要将这些键重新映射到
  • 更改 UITableView 的节页眉/页脚标题而不重新加载整个表视图

    有没有办法在不调用的情况下重新加载表视图的节页眉 页脚 tableView reloadData 事实上 我想在表视图的部分页脚中显示表格视图部分中的单元格数量 表视图是可编辑的 我使用删除或插入行 insertRowsAtIndexPat
  • Android:将 PNG ByteArray 写入文件

    我已将图像文件读入 ByteArray 但如何将其写回 我的意思是将 ByteArray 保存到文件系统中的图像文件 首选 PNG 格式 我的代码从 PNG 文件到 ByteArray ByteArrayOutputStream strea
  • 使用 Quartz 跨多个无状态应用程序服务器调度单个作业

    我在负载均衡器后面有一层相同的应用程序服务器 出于操作原因 我有一个限制 即两个应用程序服务器上的应用程序配置必须相同 以便可以轻松添加和删除节点 所有应用程序服务器共享相同的数据库 应用程序服务器不会 不会集群 到目前为止 这一切都运行良
  • 在片段中初始化字体

    我有这一行 Typeface font Typeface createFromAsset getAssets fonts Delius Regular ttf but the getAssets 参数似乎带来了一些错误 它带有可怕的红线下划
  • 为什么我们要在 YARN 中配置 mapred.job.tracker?

    据我所知 YARN 被引入并取代了 JobTracker 和 TaskTracker 我看过一些Hadoop 2 6 0 2 7 0安装教程 他们正在配置mapreduce framework name作为纱线和mapred job tra
  • 在运行时调整 char[] 的大小

    我需要调整大小char array size to char array new size 在运行时 我怎样才能做到这一点 如果您正在使用std vector
  • ASP.NET MVC 3:具有继承/多态性的 DefaultModelBinder

    首先 对这篇大文章 我尝试先做一些研究 以及针对同一问题的技术组合 ASP NET MVC 3 Ninject 和 MvcContrib 表示歉意 我正在使用 ASP NET MVC 3 开发一个项目来处理一些客户订单 简而言之 我有一些继
  • 有没有办法生成 DOCX 文件的缩略图?

    我已经使用像 ASPOSE 这样的 付费 工具完成了这项工作 但我很好奇是否有任何开源工具可以做到这一点 我确信可能有工具可以做到这一点 但如果您可以将文件转换为可以轻松光栅化的格式 那么可能值得探索 例如 将工作文档转换为 pdf 然后对
  • 对从 JSON 创建的数据框应用过滤条件

    我正在处理由 JSON 创建的数据帧 然后我想在数据帧上应用过滤条件 val jsonStr metadata key 84896 value 54 key 1234 value 12 val rdd sc parallelize Seq
  • 命名空间不能直接包含成员... + 类型或命名空间定义,或文件结尾预期错误

    我正在尝试编译适用于 Windows Phone 的 Sync Framework 4 0 的示例代码 但是我在几个文件中遇到了错误 这些文件之一是 if SERVER namespace Microsoft Synchronization
  • 我如何从密钥库中获取秘密?

    我想从 Azure 密钥保管库获取机密 我找到了下面的代码并尝试了它 但我因错误而失败 private String clientId i private String secret i KeyVaultClient client new
  • 我什么时候应该使用 out 参数?

    我不明白何时应该使用输出参数 如果我需要返回多个类型 我个人会将结果包装在新类型中 我发现使用它比使用 out 更容易 我见过这样的方法 public void Do int arg1 int arg2 out int result 在某些