我有一段“普通”C++ 代码,我正试图让 C# 客户端可以使用它。我已经用 /CLR 成功编译了这个。我现在知道这还不够:我必须引入托管包装类(“ref”)以使代码可以从托管代码中调用。这个问题是关于在我介绍 ref 类之前发生的事情。
我发现在 C# 项目中可以看到原生 C++ 类,并且我可以编写
MyNativeClass mnc = new MyNativeClass();
...尽管编译器拒绝了对实例调用方法的任何尝试。我发现,当我运行 C# 代码时,从未调用过 MyNativeClass 构造函数——事实上,实例化 mnc 的尝试似乎根本没有产生任何代码,因此完成而没有错误。
C# 是如何解释我项目中的本机类型的?为什么编译器显然允许我实例化一个实例?为什么方法与类型本身不同?