Objective-C等效于C#中的'as'运算符

时间:2013-07-08 14:18:45

标签: c# objective-c

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;
    // ...
}

2 个答案:

答案 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;
               }