System.Reflection.Missing.Value是什么作用?

22

我遇到了下面给出的代码

Object oMissing = System.Reflection.Missing.Value
oDataDoc = wrdApp.Documents.Open(ref oName, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing);

我不明白 ref oMissing 将会做什么。它是否会自动获取值或类似的操作?


2
哇,这是怎么回事,为什么这个值被引用传递了? - Display Name
@SargeBorsch 谁知道呢?我猜这是一些 COM 的东西,而 COM 的东西总是不太容易读懂的。 - King King
1
是的,我完全同意你的观点。 - Murtaza Munshi
这篇微软文章中的示例代码通过引用传递了 System.Reflection.Missing.Value 值:https://support.microsoft.com/kb/301659?wa=wsignin1.0 - Joey Adams
2个回答

12

它表示null值。请注意,null不等于Missing.Value

补充一些信息,如下图所示,Missing.Value不等于null,实际上是Missing类对象的新实例

enter image description here


1
那么,Missing.Value等于什么? - Murtaza Munshi
8
如果您传递此值,则 Word API 将视为未提供相应参数的值。在 VB.NET 中,您可以避免发送您不感兴趣的值;但早期版本的 C# 不支持默认参数。因此,作为替代方案,使用 _Missing.Value_。与 null 不同,Missing.Value 允许 API 获取该参数的默认值(如其类中定义的)并继续处理。 - Prash

3

它代表着null值。

引自MSDN

表示Missing类的唯一实例。


1
为什么我们不能传递null而要使用Missing.Value? 我不理解其中的逻辑。 - Murtaza Munshi
@MurtazaMunshi 我猜如果值为null,行为可能与Missing.Value不同。 - King King
如果您将值传递为null,则不会为参数提供任何值。还请查看此论坛:- http://forums.asp.net/t/1636505.aspx/1 - Rahul Tripathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接