Javascript与C#引用类型
我是C#的新手,发现引用类型定义与JavaScript不同 有人能解释为什么C#返回30,而JS返回20 JavascriptJavascript与C#引用类型,javascript,c#,Javascript,C#,我是C#的新手,发现引用类型定义与JavaScript不同 有人能解释为什么C#返回30,而JS返回20 Javascript class Person { constructor(age) { this.age = age; } } let person = new Person(20); const old = (age) => { age += 10; }; old(person.age); console.log(person.age); // 20
class Person {
constructor(age) {
this.age = age;
}
}
let person = new Person(20);
const old = (age) => {
age += 10;
};
old(person.age);
console.log(person.age); // 20
C#
在JS示例中,您只是在通过年龄-一个简单的数字。在C#示例中,您传递的是
Person
对象本身
如果您将JS更改为
const old = (person) => {
person.age += 10;
};
您将得到所需的结果第一个示例不会更改对象属性值。它修改局部变量,然后不返回它。改为传递
person
,然后修改该对象的属性。你没有这样做-有一次你做了old(age)=>{age+=10;}
另一个老人{Person.Age+=10;}
。如果您将JS更改为old=(person)=>{person.age+=10;}
或将C#更改为old(int-age){age+=10;}
您将得到相同的结果。请不要以使现有答案无效的方式更改问题。您不需要将更正后的代码放入其中。您好,我将JS的旧方法更新为以下内容,但结果仍然是20?const old=(person)=>{person.age=30;}@Jim_Mcdonalds@Jim_Mcdonalds请记住,您现在需要调用old(person)
,而不是old(person.age)
@Jim_Mcdonalds,请确保在调用person
函数时只将person
传递给您的old
函数
const old = (person) => {
person.age += 10;
};