因为我不知道甚至调用了这种类型的构造,我不知道如何开始搜索答案,所以我直接要求它:C ++语法与C ++中的代码相同? / p>
#define DoExit { \
if (pDialog) delete pDialog; \
if (lib) FreeLibrary(lib); \
if (MadeNew) delete pRS; \
return retval;}
这是从类方法中获取的,因此它是稍后调用的函数的内联声明。事实上,这是一个使用它的例子:
if (pRS->GetSize() == 0) DoExit
注意缺少()
或终止分号。
我的第一个猜测是某种内联委托构造,但我也不太熟悉那些,所以这只是猜测。
所以,你们所有的C ++大师都在那里!
答案 0 :(得分:2)
C#中此代码的等价物是
;
,因为:
delete something
由垃圾收集器完成,因此不需要这样做。
库(即程序集由.NET框架管理,因此严格来说,除非要加载非托管库,否则不管理加载程序集的卸载)
如果您在其他地方执行FreeLibrary
LoadLibrary
,则可以找到等效的单个部分P/Invoke
。在这种情况下,请查看此处:FreeLibrary。
答案 1 :(得分:1)
这是C ++中的一个宏 - 您基本上只需添加该代码,因此“实际”代码将为:
if (pRS->GetSize() == 0)
{
if (pDialog) delete pDialog;
if (lib) FreeLibrary(lib);
if (MadeNew) delete pRS;
return retval;
}
无法直接在C#中执行等效操作。您需要手动展开代码,然后根据需要移植扩展代码,或将宏转换为方法并调用它。
答案 2 :(得分:0)
您遇到的内容称为macro。 C#中没有等价物。