Objective-C在C#中是否有类似于'as'运算符的强制转换运算符,或者推荐的方法是使用isKindOfClass方法来测试对象,如果是,则将对象强制转换为所需的类? 在C#中我这样做:
Class1 o1 = obj as Class1;
if (o1 != null)
{
// ...
}
在Objective-C中,我应该这样做:
if ([obj isKindOfClass:[Class1 class]]) {
Class1* o1 = (Class1*)obj;
// ...
}
答案 0 :(得分:1)
你是对的,isKindOfClass
是检查对象是给定类的实例还是子类实例的正确Objective-C方法。
但是看看
的答案用于各种整洁的宏,类别甚至是C ++模板,以提供模仿的语法
C ++ dynamic_cast
或C#as
运算符。
答案 1 :(得分:-1)
class A { }
class B : A { }
A a = new A();
if(a.GetType() == typeof(A)) // returns true
{
}
A b = new B();
if(b.GetType() == typeof(A)) // returns false
{
}
或
test ts = new test();
object ob = ts;
if (typeof(test) == ob.GetType())
{
return true;
}