COM 对象仅适用于 VB.NET 而不适用于 C#
本文关键字:适用于 不适用 NET VB 对象 COM | 更新日期: 2023-09-27 17:55:42
我有一个 COM 对象,它在 VB.NET 中工作正常,但在 C# 中不能。这两个项目都是 .NET 4 控制台应用程序。
COM 对象在 C# 中加载,但方法不返回任何值。为什么它会在 VB.NET 而不是 C# 中工作?
谢谢!
Sub Main()
Dim server As New NoahVersionLib.Version
Dim val As Int32
server.GetNoahServerVersionMS(val)
End Sub
static void Main(string[] args)
{
var server = new NoahVersionLib.Version();
int val= 0;
server.GetNoahServerVersionMS(ref val);
}
val 在 C# 版本中为 0,但在 VB.NET 版本中具有值。
更新:
我需要在 C# 中将 [STAThread] 放在我的 Main() 上。 它现在有效。
我需要在 C# 中将 [STAThread] 放在我的 Main() 上。它现在有效。
您是否在 C# 中尝试过以下内容?
static void Main(string[] args)
{
NoahVersionLib.Version server = new NoahVersionLib.Version();
Int32 val= 0;
server.GetNoahServerVersionMS(ref val);
}
您的 2 个版本之间的唯一区别是您使用的是 var
而不是声明实际类型,允许编译器潜在地推断出不正确的类型(不太可能,但肯定是可能的);并使用 int
而不是Int32
。据我所知,int == Int32,但可能在 COM 的一些奇怪的角落情况下,它可能不是..?