问题标签 [out]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 对对象类型使用“ref”和/或“out”
我坚持使用 .Net 1.1 应用程序(即我现在不能使用 2.0 中的泛型好东西),并且我试图优化代码的某些部分。由于它处理了很多需要释放的运行时可调用包装器,因此我最终创建了一个实用方法,该方法循环直到所有引用都被释放。该方法的签名是:
释放所有 comObjects 后,我调用 GC.Collect 和 GC.WaitForPendingFinalizers(不要问 - 任何处理 Office 互操作的人都知道)。
而且......像往常一样,我遇到了一个极端情况 - 如果我没有在 GC.Collect 调用之前将相应的托管引用分配给 null ,它就不会正确清理。
所以,我的代码看起来像:
因为有一堆xxx=null,所以我决定把它放在util方法中,但是由于引用传递和引用参数传递之间存在差异,显然我不得不将方法更改为:
并将调用者编辑为:
这失败并显示一条消息:“无法从 'out MyComClass' 转换为 'out object'”
虽然我能想到为什么它可能是一个问题(即从 object 到 MyComClass 的反向转换不是隐式的,并且不能保证该方法会做什么),但我想知道是否有解决方法,或者我需要留下我的数百个空值分配。
注意:我有一堆不同的 COM 对象类型,这就是为什么我需要一个“对象”参数,而不是一个类型安全的参数。
c# - 'ref' 和 'out' 关键字有什么区别?
我正在创建一个函数,我需要在其中传递一个对象,以便该函数可以修改它。有什么区别:
和
我应该使用哪个,为什么?
c# - 如何明确丢弃 out 参数?
我正在打电话:
但我实际上并不关心这些消息。如果它是一个输入参数,我不在乎,我只是传入一个空值。如果是我不在乎的回报,我就放弃它。
有没有办法用 out 做类似的事情,还是我需要声明一个我会忽略的变量?
c# - 在 C# 4.0 中,为什么方法中的 out 参数不能是协变的?
鉴于这个神奇的界面:
而这个类层次结构:
我现在可以编译这个:
这是伟大的。但是如果我以不同的方式定义接口怎么办:
我表示帽子可能是空的,使用单独的布尔返回值(以前的版本可能会从空帽子返回空兔子)。但我仍然只输出一只兔子,所以没有做任何与以前版本在逻辑上不同的事情。
CTP 中的 C# 4.0 编译器在接口定义中给出错误 - 它要求“out”方法参数为不变类型。是否有一个明确的理由为什么不允许这样做,或者它可能会在未来的版本中解决?
c# - C# out 参数性能
C#中的out参数是否对我应该了解的任何性能影响?(如例外)
out
我的意思是,在一个每秒运行几百万次的循环中有一个带有参数的方法是个好主意吗?
我知道它很难看,但我使用它的方式与Int32.TryParse
使用它们的方式相同——返回 abool
以告知某些验证是否成功,如果成功,则有一个out
包含一些附加数据的参数。
c# - 为什么迭代器方法不能采用“ref”或“out”参数?
我今天早些时候试过这个:
这背后的原因是什么?
c# - 在 Moq 中分配 out/ref 参数
是否可以使用 Moq (3.0+)分配out
/参数?ref
我看过 using Callback()
,但Action<>
不支持 ref 参数,因为它基于泛型。我还希望It.Is
在参数的输入上设置一个约束 ( ) ref
,尽管我可以在回调中做到这一点。
我知道 Rhino Mocks 支持这个功能,但是我正在做的项目已经在使用 Moq。
c# - 什么时候应该使用 out 参数?
我不明白什么时候应该使用输出参数,如果我需要返回多个类型,我个人将结果包装在一个新类型中,我发现使用起来比 out 容易得多。
我见过这样的方法,
有没有真正有意义的情况?
怎么样TryParse
,为什么不返回一个ParseResult
类型?还是在较新的框架中返回一个可以为空的类型?
c# - 调用者(在 C# 中)的“out”关键字的目的是什么?
当 C# 函数具有输出参数时,您可以如下说明:
这表明在调用函数时不必初始化参数。但是,调用此函数时,您必须重复 out 关键字:
我想知道这有什么好处。为什么需要重复部分功能规范?有人知道吗?
c++ - 如何缩进 cout 输出?
我正在尝试打印二叉树
如何缩进输出以便使用级别“-”字符缩进每个值。