gpt4 book ai didi

c# - 我在使用 C# 对象初始值设定项时做错了什么?

转载 作者:太空狗 更新时间:2023-10-29 19:48:32 27 4
gpt4 key购买 nike

当我在 C# 中使用新的对象初始值设定项初始化一个对象时,我无法使用该类中的一个属性来执行进一步的操作,我不知道为什么。

我的示例代码:

Person person = new Person { Name = "David", Age = "29" };

在 Person 类中,x 将等于 0(默认值):

public Person()
{
int x = Age; // x remains 0 - edit age should be Age. This was a typo
}

但是 person.Age 确实等于 29。我确信这很正常,但我想了解原因。

最佳答案

在构造函数“public Person()”完成运行后,会为 Name 和 Age 设置属性。

Person person = new Person { Name = "David", Age = "29" };

相当于

Person tempPerson = new Person()
tempPerson.Name = "David";
tempPerson.Age = "29";
Person person = tempPerson;

因此,在构造函数中 Age 还不会变成 29。

(tempPerson 是您在代码中看不到的唯一变量名称,它不会与以这种方式构造的其他 Person 实例发生冲突。tempPerson 是避免多线程问题所必需的;它的使用可确保新对象不会在执行构造函数和初始化所有属性之后,才可用于任何其他线程。)


如果您希望能够在构造函数中操作 Age 属性,那么我建议您创建一个将年龄作为参数的构造函数:

public Person(string name, int age)
{
Name = name;
Age = age;

// Now do something with Age
int x = Age;
// ...
}

关于c# - 我在使用 C# 对象初始值设定项时做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/558916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com