我尝试了不同的东西,但我对Interop很生气.
(这里的单词string不是指变量类型,而是"char的集合"):我有一个非管理的C++函数,在dll中定义,我试图从C#访问,这个函数有一个字符串参数和一个字符串返回值,如下所示:
string myFunction(string inputString)
{
}
Run Code Online (Sandbox Code Playgroud)
C++方面应该是什么字符串?和C#one?什么参数需要DllImport呢?
我已经阅读了一些关于.NET垃圾收集器的文档,但我仍有一些疑问(C#中的示例):
1)GC.Collect()是否调用部分或完整集合?2)部分收集是否会阻止"受害者"应用程序的执行?如果是..那么我想这是一个非常"轻松"的事情要做,因为我正在运行一个使用2-3GB内存的游戏服务器而且我"从不"执行停止(或者我看不到它们...... ).3)我已经阅读了关于GC根的内容,但仍然无法理解它们是如何工作的.假设这是代码(C#):
MyClass1的:
[...]
public List<MyClass2> classList = new List<MyClass2>();
[...]
Run Code Online (Sandbox Code Playgroud)
主要:
main()
{
MyClass1 a = new MyClass1();
MyClass2 b = new MyClass2();
a.classList.Add(b);
b = null;
DoSomeLongWork();
}
Run Code Online (Sandbox Code Playgroud)
是否有资格被垃圾收集(在DoSomeLongWork完成之前)?对classList包含的b的引用,是否可以将其视为根?或者root只是对实例的第一个引用?(我的意思是,b是根参考,因为实例化发生在那里).