我正在将一些Objective C代码转换为C#,以便在Monotouch iPhone应用程序中使用。
在目标C中,测试了以下等价条件:
if ([cell.backgroundView class] != [UIView class])
... do something
单元格是UITableViewCell
。
在C#中,我想使用(到目前为止)测试相同的条件:
if ( !(cell.BackgroundView is UIView))
... do something
对Objective C代码的理解是否正确,即它是否测试cell
的类型? C#中的等价物是什么?
答案 0 :(得分:9)
看起来正确,除非UITableViewCell
继承自UIView
。
在这种情况下你需要
if (cell.BackgroundView.GetType() != typeof(UIView))
... do something
答案 1 :(得分:2)
在Objective-C中测试类型的正确方法是这样的:
if ([[cell backgroundView] isKindOfClass:[UIView class]]) {
//the backgroundView is a UIView (or some subclass thereof)
}
如果您想测试显式成员身份,可以执行以下操作:
if ([[cell backgroundView] isMemberOfClass:[UIView class]]) {
//the backgroundView is a UIView (and not a subclass thereof)
}