代码之家  ›  专栏  ›  技术社区  ›  J. Doe

模式匹配中的is vs equals()vs==

  •  -4
  • J. Doe  · 技术社区  · 6 年前

    在C 7中,我们有了一个新的模式匹配机制。
    如中所述 this article 您可以使用 is 关键字检查变量是否具有某个值。

    据我之前所知 用于检查类型,而不是内容。
    所以我想知道-使用 在模式匹配中,而不是 == Equals() 当检查变量是否有某个值时?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Cosmin Sontu    6 年前

    class Shape {}
    class Circle : Shape {}
    
    var s = new Shape();
    var c = new Circle();
    Shape nullShape = null;
    
    var isCaCircle = c is Circle; // -> true
    var isSaCircle = s is Circle; // -> false
    var isCaShape = c is Shape; // -> true
    var isNullShapeNull = nullShape is null; // -> true;
    

    if (c is Shape s) { 
         // use s of type Shape here 
    }