将Objective C转换为C# - 这段代码的等价物是什么?

时间:2011-05-13 17:54:09

标签: c# objective-c xamarin.ios

我正在将一些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#中的等价物是什么?

2 个答案:

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