级联和链接有什么区别

时间:2013-12-05 22:49:06

标签: c# java javascript jquery

我只是从一个关于级联的论坛中找到的。问题是级联在大便中意味着什么。我试图找到谷歌的答案,也试图找到一些其他stackoverflow线程,但我不能。我只是找到了这个链接http://en.wikipedia.org/wiki/Method_cascading

我知道什么是链接,我使用它,大多数是在javascript,jquery和其他语言中,但我不理解链接和级联之间的区别。有谁能够帮我?或者任何人都可以提供一些有用的链接吗?

2 个答案:

答案 0 :(得分:4)

链接是返回下次调用时使用的方法调用结果的地方。

C#

Enumerable.Range(0,10).Skip(1).Aggregate(myList.First(),(result,listItem) => result += listItem));
//results in 45 being returned

当返回this时,可以通过使用链接来实现级联(使得有时难以区分这两者)。 jQuery就是这样做的。

jquery的

$("#myId").css("background-color","blue").fadeIn().fadeOut();
//results in $("#myId") being returned

答案 1 :(得分:1)

您链接的维基百科页面上的定义非常明确:

  

给定方法调用ab(),在执行调用之后,方法级联将此表达式计算为左对象a(具有其新值,如果是mutated),而方法链接将此表达式计算为正确的对象。

这意味着,a.b()返回带有方法级联的变异a实例。 a.b()使用方法链返回与b()不同的内容。

所以,这是方法级联:

class YourClass {
    public YourClass b() {
        // do stuff
        return this;
    }

    public YourClass c() {
        // do stuff
        return this;
    }
}

..允许:yourClass.b().c();

..这是方法链接:

class YourClass {
    public SomeOtherObject b() {
        // do stuff
        return new SomeOtherObject(this);
    }
}

class SomeOtherObject {
    private YourClass _owner;

    public SomeOtherObject(YourClass owner) {
        _owner = owner;
    }

    public void c_onOtherObject() {
    }
}

..允许:yourClass.b().c_onOtherObject();

编辑:我回滚了之前的编辑。看来上面的内容是正确的,并且术语没有错误地翻转。