C++/CLI中的安全转换 - 相当于C#的"as"?

dev*_*per 8 c# casting c++-cli

之前我曾问过as在C#中使用是否安全(即不会爆炸):在C#中使用"as"是一种安全的铸造方式吗?

我喜欢这个答案并最终使用了基于它的东西:

Foo x = y as Foo;
if (x != null)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是现在我将我的C#代码转换为C++/CLI(由于依赖问题......)所以问题是......

我正在寻找相当于"as"的C++/CLI,这是安全的,如果不是正确的类型,也不会在运行时爆炸.任何人都可以建议一个满足我需求的演员吗?(如果可以,请提供一个例子)

谢谢!

Pup*_*ppy 13

C++做这种事的方法是dynamic_cast.我不知道托管引用和非托管引用是否相同,MSDN对它的信息很少.

  • @Hans:不,`safe_cast`是[cast](http://msdn.microsoft.com/en-us/library/ms173105.aspx)C#`is`返回一个布尔值,完全不同. (4认同)
  • dynamic_cast <>是as,safe_cast <>是:) (2认同)