Javascript与C#引用类型
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#
class Program
{
public class Person
{
public int Age;
}
public static void Old(Person person)
{
person.Age += 10;
}
static void Main(string[] args)
{
var person = new Person() {Age = 20};
Old(person);
Console.WriteLine(person.Age); // 30
}
}
回答
在您的 JS 示例中,您只是传递了年龄 - 一个简单的数字。在您的 C# 示例中,您正在传递Person对象本身。
如果您将 JS 更改为
const old = (person) => {
person.age += 10;
};
你会得到你想要的结果