TypeScript传递ref参数

时间:2017-07-16 18:38:56

标签: c# typescript

在C#中,可以通过引用传递参数。例如:

    private void Add(ref Node node)
    {
        if (node == null)
        {
            node = new Node();
        }
    }
    Add(ref this.Root);
执行this.Root

后,

Add(ref this.Root)不会为空

从我在TypeScript中看到的情况来看,无法通过引用传递参数。这段代码:

    private addAux(node: Node): void {
        if (node === undefined) {
            node = new Node();
        }
    }
    addAux(this._root);

执行addAux(this._root)后,this._root仍未定义,因为其副本将传递到addAux

是否有解决方法与TypeScript中的C#具有相同的ref关键字功能?

2 个答案:

答案 0 :(得分:2)

我现在可以采用的唯一解决方法是做这样的事情:

mutable

此后,对象private void MyButtonLeaveHandler(object sender, EventArgs e) { Button button = sender as Button; if (button != null) { button.BackgroundImage = ((Image)(Properties.Resources.leave_img)); } } 内的节点将不会被定义。

答案 1 :(得分:0)

你可以这样做吗?

private addAux(node: Node): Node {
    if (node === undefined) {
        node = new Node();
    }
    return node
}

this._root = addAux(this._root);

作为注释 - 这是一个JavaScript问题,而不是TypeScript。 JS中的数据类型总是按值传递。