gpt4 book ai didi

c# - 在另一个属性 setter 中使用属性值

转载 作者:行者123 更新时间:2023-11-30 18:54:49 25 4
gpt4 key购买 nike

在我的 Class 中,我需要根据另一个设置一个 property 值:

public class Quantities
{
private int _quant;
public int Quant
{
get { return _quant; }
set
{
if (Unit == "K")
{
_quant = value / 1000;
}
else
{
_quant = value;
}
}
}
public string Unit { get; set; }
}

根据多项测试,我使它工作正常,但我仍然不知道这样做是否安全。
Quant Property 是否有可能在 Unit Property 之前被评估,或者编译器(或 JIT)是否知道它应该分配 Unit Property 首先?

最佳答案

这与编译器或 JIT 无关。 您的 代码分配值。 需要知道分配它们的顺序。

顺便说一句:您的代码展示了 temporal coupling .最好通过将属性设置为 readonly 并提供需要该单元的构造函数来至少使 Unit 不可更改:

public class Quantities
{
private readonly string _unit;
private int _quant;

public Quantities(string unit)
{
if(unit == null) throw new ArgumentNullException("unit");
_unit = unit;
}

public int Quant
{
get { return _quant; }
set
{
if (Unit == "K")
{
_quant = value / 1000;
}
else
{
_quant = value;
}
}
}
public string Unit { get { return _unit; } }
}

现在不能以不正确的方式使用这个类。

更多可以随类提高的点,请引用Lasse's answer .

关于c# - 在另一个属性 setter 中使用属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16936366/

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