您好,我正在使用 C# 对象初始化器,例如
public class Invoice
{
public decimal GrossSum { get; set; }
public decimal GrossSumComp { get; set; }
}
public class ABC()
{
public Invoice Invoice {get;set;}
public ABC(decimal grossSum)
{
Invoice=new Invoice()
{
GrossSum=grossSum,
GrossSumComp=**GrossSum**
};
}
}
而且我看到我们无法将一个属性的值分配给其中的另一个属性,就像上面一样,我试图将 GrossSum 分配给 GrossSumComp,但出现了编译错误。只是想知道为什么它不允许这样做。任何帮助都将得到高度认可。
最佳答案
因为这是指定的方式。第二行中的 GrossSum
是对名为 GrossSum
的变量的引用,而不是正在初始化的对象的属性。
套用 Eric Lippert 的话。对于要实现的功能,它确实是
- 提议
- 分析
- 设计
- 已实现
- 测试过
这些都会产生成本,因此他们应该增加值(value)以匹配成本,最好超过成本。
如果该功能有一个简单的变通办法,很可能成本可能会(很多)高于潜在值(value)。
在您的情况下,您可以简单地分配 grossSum
而不是 GrossSum
。这是一个简单的解决方法
关于c# - 在 C# Object Initializer Syntax 为什么我们不能在其中将一个属性分配给另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14624866/