Javascript与C#引用类型

Javascript与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

我是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

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;
};