在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
关键字功能?
答案 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中的数据类型总是按值传递。