这段c++代码片段在c#中的等价语法是什么?
本文关键字:语法 是什么 代码 c++ 片段 这段 | 更新日期: 2023-09-27 18:16:11
因为我不知道这种类型的结构甚至被称为什么,我不知道如何开始搜索答案,所以我直接问它:c#语法等效于c++中的这段代码是什么?
#define DoExit { '
if (pDialog) delete pDialog; '
if (lib) FreeLibrary(lib); '
if (MadeNew) delete pRS; '
return retval;}
这是从类方法中获取的,所以它是稍后调用的函数的内联声明。事实上,这里有一个使用它的例子:
if (pRS->GetSize() == 0) DoExit
注意缺少()
或终止分号。
我的第一个猜测是某种内联委托结构,但我也不是很精通这些,所以这只是一个猜测。
所以,所有的c++大师们,努力去做吧!
这段代码在c#中相当于
;
因为:
delete something
是由垃圾收集器处理的,所以不需要处理它。库(例如,程序集是由。net框架管理的,所以严格来说,你不管理程序集的加载和卸载,除非你正在加载非托管的库)你能找到一个等价的部分是FreeLibrary
如果你在其他地方做LoadLibrary
P/Invoke
。在这种情况下,请看这里:
这是c++中的一个宏-你基本上只需要添加代码,所以"实际"代码将是:
if (pRS->GetSize() == 0)
{
if (pDialog) delete pDialog;
if (lib) FreeLibrary(lib);
if (MadeNew) delete pRS;
return retval;
}
在c#中没有办法直接进行等效的操作。您需要手动展开代码,然后根据需要移植展开的代码,或者将宏转换为方法并调用它。
您所遇到的称为宏。c#中没有相应的