VC.net编程有没有和C#中等效的is操作符用于判断某个对象是否是一个类的实例?
本帖最后由 snddman 于 2012-04-27 08:37:25 编辑 VC.net编程(托管C++)有没有和C#中等效的is操作符,用于判断某个对象是否是一个类的实例,例如
if(str is String)
{
}
[解决办法]
Visual C++
如何:使用 C++ 实现 C# 的 is 和 as 关键字
请参见 示例
语言筛选器: 全部 语言筛选器: 多个 语言筛选器: Visual Basic 语言筛选器: C# 语言筛选器: C++ 语言筛选器: J# 语言筛选器: JScript
Visual Basic(声明)
Visual Basic(用法)
C#
C++
J#
JScript
本主题演示如何在 C++ 中实现 is 和 as C# 关键字的功能。
有关更多信息,请参见 is(C# 参考)和 as(C# 参考)。
示例
复制代码
// CS_is_as.cpp
// compile with: /clr
using namespace System;
interface class I {
public:
void F();
};
ref struct C : public I {
virtual void F( void ) { }
};
template < class T, class U >
Boolean isinst(U u) {
return dynamic_cast< T >(u) != nullptr;
}
int main() {
C ^ c = gcnew C();
I ^ i = safe_cast< I ^ >(c); // is (maps to castclass in IL)
I ^ ii = dynamic_cast< I ^ >(c); // as (maps to isinst in IL)
// simulate 'as':
Object ^ o = "f";
if ( isinst< String ^ >(o) )
Console::WriteLine("o is a string");
}
输出
o is a string
请参见
其他资源
C++ 与其他 .NET 语言的互操作性
要提出有关“帮助”或本产品其他功能的建议或错误报告,请转到反馈站点。