C#中此C ++代码段的等效语法是什么?

时间:2013-05-29 19:44:04

标签: c# c++

因为我不知道甚至调用了这种类型的构造,我不知道如何开始搜索答案,所以我直接要求它: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 ++大师都在那里!

3 个答案:

答案 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#中没有等价物。