问题标签 [out-parameters]
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# - 如何规避在匿名方法块中使用 out 参数?
以下方法无法编译。Visual Studio 警告“不得在匿名方法中使用 out 参数”。该WithReaderLock(Proc action)
方法采用delegate void Proc()
.
获得这种行为的最佳方法是什么?(请不要提供关于线程安全字典的建议,这个问题通常是为了解决 out 参数问题)。
c# - C# Out 参数问题:Out 如何处理值类型?
更新所以完全拉了一个工具时刻。我真正的意思是参考与输出/参考。任何说“参考”的东西,我真正的意思是参考,如
一些方法(对象一些对象)
相对
SomeMethod(out someObject)
对不起。只是不想更改代码,因此答案已经有意义。
据我了解,与 ref 不同,它“复制”指针并在堆栈上创建一个新空间以使用该指针,但不会更改指针:
Out 复制指针并可以操纵它指向的位置:
对对象来说这很好而且很花哨,但是值类型怎么办,因为它们没有任何东西指向仅在堆栈上?
com - 即使 COM 功能失败,是否应该设置 out 参数?
在实现COM
接口时,我总是在成功时分配输出参数,但我也应该在错误时这样做吗?
有一次,我因为没有初始化一个 out 参数并假设如果我初始化变量,如果我不在方法内部更改它,它将保持那个值。但是我使用了这个方法.NET
,因为编组器看到这是一个[out]
参数,它丢弃了我放在调用站点上的初始值,并在函数返回后放入垃圾中(调试很有趣,不是)。
即使在故障过度补偿时也分配给out
参数还是我真的应该这样做?
编辑:即使在函数失败的情况下正式不应访问参数我经常看到(有时编写)这样的代码(使用Sharptooth的帖子中的示例):
这在未编组的代码(相同的线程单元)中可以正常工作,但是如果涉及编组器,它是否足够聪明,仅在函数成功时才设置返回值?
com - 我应该如何检查 COM 中的 [out] 参数是否可以使用?
除非函数成功,否则官方不应使用[out]
COM 函数中的参数,这意味着(至少)有三种方法可以查看是否[out]
可以使用参数。
考虑以下接口
您会推荐以下哪种方式来使用它?
1.检查返回值
这让我有点紧张,因为一个错误IFoo
可能会导致NULL
指针取消引用。
2.检查输出参数
这取决于一个事实,如果一个方法失败,它不能改变任何[out]
参数(如果参数改变了 <==> 使用它是安全的)。
请注意,无论如何都会发生这种情况,如果指针不存在,则CComPtr
析构函数将调用,因此它不会是垃圾。Release
NULL
3.偏执的方式,检查两者
在我看来,这有点冗长。
PS 见相关问题。
stored-procedures - SubSonic:检索存储过程 OUT 参数的值
我喜欢你的工具。我一直在使用它,但是今天我遇到了一个问题......
我编写了一个通过 OUT 参数返回一些值的存储过程,但 SubSonic 似乎没有生成存储过程方法的输出参数。例如,对于这样的 SPI:
CREATE PROC dbo.MyProc @param1 int, @param2 int out, @param3 varchar(150) out
它生成签名
SPs.MyProc(int?param1, int?param2, string param3
我希望它会产生这个
SPs.MyProc(int?param1, out int?param2, out string param3)好吧,考虑到该方法实际上只是配置了 SP 而没有实际执行它,我希望 Subsonic 会生成这个
SPs.MyProc(int?param1, ref int?param2, ref string param3)
你们如何解决这个问题?Subsonic 已经有类似的东西了,我只是错过了它吗?
c# - 为什么'ref'和'out'不支持多态性?
采取以下措施:
为什么会出现上述编译时错误?ref
和out
参数都会发生这种情况。
c# - 动态方法和输出参数?
如何为具有out
-parameter 的委托定义 DynamicMethod ,像这样?
假设我只是想要一个在调用该方法时将a
参数设置为null
的方法。
请注意,我知道处理此问题的一种可能更好的方法是使该方法返回Action
委托,但这只是较大项目的简化部分,并且所讨论的方法已经返回了一个值,我需要处理该out
参数除此之外,还有这个问题。
我试过这个:
但是,我明白了:
上del(out a);
线。
请注意,如果我注释掉在堆栈上加载 null 并尝试将其存储到参数中的两行,则该方法将无异常运行。
编辑:这是最好的方法吗?
c# - 在 C# 中将属性作为“out”参数传递
假设我有:
我想将Value成员作为输出参数传递,例如
但我得到一个编译错误,“'out' 参数未被归类为变量。” 有没有办法实现这一点,或者我将不得不提取一个变量,à la:
c# - 代码分析返回有关不使用“out”参数的建议
我针对我创建的对象运行 VS 2008 代码分析工具并收到以下建议...
警告 147 CA1021:Microsoft.Design:考虑不需要将“returnValue”作为输出参数的设计。
我发现“输出”参数相当有用,并且没有意识到它们被认为是不赞成设计实践的。我想知道是否有人可以阐明我收到此警告的原因?如果这是不好的做法?为什么?什么是好的做法?
我很感激任何建议。
c# - C#中的空参数?
在阅读 stackoverflow 后,在检查 DateTime 格式的情况下,您应该使用 DateTime.TryParse。在尝试了一些正则表达式之后,他们似乎变得又长又讨厌,想要涵盖很多格式。
但是 TryParse 需要一个“out”参数,因为我只想进行验证格式检查,所以不需要实际结果。
所以我只剩下一个变量来保存“输出”结果,我什么也不做。有没有办法让我不必做一个输出参数?
所以我摆脱了这个警告,不再让一个变量到处乱飞。