将目标 C 转换为 C# - 与此代码等效

本文关键字:代码 目标 转换 | 更新日期: 2023-09-27 17:56:17

我正在将一些Objective C代码转换为C#,以便在Monotouch iPhone应用程序中使用。

在目标C中,测试以下等效条件:

if ([cell.backgroundView class] != [UIView class])
    ... do something

单元格是一个UITableViewCell

在 C# 中,我想使用以下方法(到目前为止)测试相同的条件:

if ( !(cell.BackgroundView is UIView))
    ... do something

对目标C代码的理解是否正确,即它测试cell的类型?C# 中的等效项是什么?

将目标 C 转换为 C# - 与此代码等效

看起来不错,除非UITableViewCell继承自UIView

在这种情况下,您将需要

if (cell.BackgroundView.GetType() !=  typeof(UIView))
    ... do something

在 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)
}