我希望A包含一个B类变量。 但是,在为变量赋值时,我想检查它是否是B的某个子类的实例。
public class A {
public System.Type acceptedType;
public B target;
public A(System.Type t1){
this.acceptedType = t1;
}
public bool connect(B b1){
if(b1 is this.acceptedType){
this.target = b1;
return true;
}
return false;
}
}
但是我得到了:
意外的符号'this',期待'type'
'System.Type'是错误的变量类型还是我只是误解'是'运算符?
答案 0 :(得分:1)
这不起作用:
let myPopupView : UIView = (Bundle.main.loadNibNamed("myPopupView",
owner: nil,
options:nil)?.first as? UIView)!
为什么呢?因为Foo fooObj = new Foo();
Foo fooObj2 = new Foo();
if (fooObj is fooObj2) // will not work
需要一个类型,而不是一个实例。所以这将有效:
is
修改强>
以下是您可以做您想做的事情:
if (fooObj is Foo)
答案 1 :(得分:1)
我想我已经弄明白了。
而不是:
if(b1 is this.acceptedType)
我现在用:
if(this.acceptedType.IsInstanceOfType(b1))
它似乎表现得我想要它 谢谢你指出我的错误在哪里!