我有一个带有测试方法的 VB 类库。这将返回一个整数(有时Nothing
会返回)。
Public Class Class1
Public Function testMethod() As Integer
'Some code here
Return Nothing
End Function
End Class
如果我在 VB 项目中调用该方法,一切都会按预期运行。例如:
Dim output As String = testMethod().ToString() ' Works fine and output =""
但是当我通过在 C# 应用程序中创建对象来调用该方法时,当返回值为Nothing
.
VBTestLib.Class1 classObject = new VBTestLib.Class1();
string objectStringValue = classObject.testMethod().ToString(); // Error
这意味着Nothing
将转换为null
(null.ToString()
不允许)。现在考虑下一个例子:
int objectIntValue = classObject.testMethod(); // objectIntValue = 0
这里 Nothing 将被转换为 int ( 0
) 的默认值。我已经扩展了测试,dynamic
然后分配的值为0
. IE,
dynamic objectDynamicValue = classObject.testMethod();// objectDynamicValue = 0
所以我的问题是,什么是Nothing
?分配给 C# 类型时如何转换?或者我应该得出这样的结论:
如果 VB 方法返回
Nothing
并且值被分配给值类型的 C# 变量,则将分配方法返回类型的默认值。如果它被分配给引用类型变量,那么null
将被分配。