作者freaky (jon)
看板C_Sharp
标题Re: C#的视窗程式设计
时间Mon Nov 11 16:02:21 2002
※ 引述《Action (雪...)》之铭言:
: ※ 引述《freaky (jon)》之铭言:
: : 用 .NET 的 base class library (BCL) 和 Windows Forms,
: : 既不能用 MFC 也不可以呼叫 Windows API.
: 硬是要用 System.Runtime.InteropServices.DllImport 也没什麽不可吧?
: 只是好端端的 System.Windows.Forms 不用似乎是自找麻烦...
System.Runtime.InteropServices 里面的 classes 主要是拿来
存取 COM 物件和 native APIs, 但这还是属於 BCL 的部份, 和
VC.NET 里可以直接存取不一样. 我的重点是, 语言本身不支援创造
unmanaged 物件.
: : 现在只有 Visual C++.NET 可以混用 native 和 managed code.
: 您说的 "混用" 指的是...?
在同一个 source file 内可以同时 manipulate managed 和 unmanaged 物件.
像下面这样:
#using <mscorlib.dll>
using namespace System;
__nogc class NoGCclass {
public:
void Hello() { Console::WriteLine(S"Hello, from NoGCclass!"); }
};
__gc class GCclass {
public:
void Hello() { Console::WriteLine(S"Hello, from GCclass!"); }
};
int main() {
// creates an object on the C++ heap
NoGCclass *pNoGC = new NoGCclass();
pNoGC->Hello();
// needed because unmanaged objects are not garbage collected
delete pNoGC;
// creates an object on the GC heap
GCclass *pGC = new GCclass();
pGC->Hello();
// delete not needed because the garbage collector reclaims the memory
}
--
※ 发信站: 批踢踢实业坊(ptt.csie.ntu.edu.tw)
◆ From: 61.222.173.66