我正在翻译一个API从C到C#,其中一个函数分配了一些相关的对象,其中一些是可选的。 C版本接受它用于返回整数处理的对象几个指针参数,调用者可以通过NULL
对于一些指针,以避免分配这些对象:在C#中模拟可选的“out”参数的模式?
void initialize(int *mainObjPtr, int *subObjPtr, int *anotherSubObjPtr);
initialize(&mainObj, &subObj, NULL);
对于C#版本,很明显的翻译将使用out
参数,而不是指针:
public static void Initialize(out int mainObj, out int subObj,
out int anotherSubObj);
...但是这叶无道,以指示哪些对象是不需要的。有没有任何C#API的着名例子可以做类似的事情,我可以模仿?如果没有,有什么建议吗?
不幸的是我需要避免分配不需要的对象:第一,因为一旦创建对象时屏幕上会显示一些对象,第二,因为这是非托管库的接口,所以我分配的任何对象最终需要明确地解放。 (非托管部分也是为什么对象使用句柄而不是.NET类型引用的原因。) – 2010-06-13 18:14:45