类型检查问题

时间:2017-05-20 16:47:35

标签: c#

我希望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'是错误的变量类型还是我只是误解'是'运算符?

2 个答案:

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

<== Fiddle With Me ==>

答案 1 :(得分:1)

我想我已经弄明白了。
而不是:

if(b1 is this.acceptedType)

我现在用:

if(this.acceptedType.IsInstanceOfType(b1))

它似乎表现得我想要它 谢谢你指出我的错误在哪里!