小编tif*_*tif的帖子

为什么在VB6中C#null被翻译为空,而不是Nothing

我有一个引用VB6 DLL的C#应用​​程序.当我将C#中的null传递给VB6 dll函数时,null在VB6中被转换为值Empty(value),而不是Nothing(object).例如:

 // function in vb6 dll that referenced by c# app
 Public Sub TestFunc(ByVal oValue As Variant)
 {
   ...
   if oValue is Nothing then
     set oValue = someObject
   end if
   ...

 }

 // main c# code
 private void Form1_Load(object sender, EventArgs e)
 {
    object testObject = new object();
    testObject = null;
    TestFunc(testObject);
 }
Run Code Online (Sandbox Code Playgroud)

当我传递一个对象(非null)时,它将作为对象传递给VB6.但是当null传递给vb6时,它变为值类型为Empty,而不是对象类型Nothing.谁知道为什么?无论如何,当从c#app传递时,我可以强制null为VB6中的Nothing吗?

非常感谢.

c# vb6 com com-interop

15
推荐指数
2
解决办法
2224
查看次数

标签 统计

c# ×1

com ×1

com-interop ×1

vb6 ×1