嗨,我在使用C#Object Initializer

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的变量的引用,而不是正在初始化的对象的属性。

解释埃里克·利珀特。对于要实现的功能,它确实是


建议的
分析
设计的
已实施
经过测试


这些都产生了成本,因此它们应该增加价值以匹配成本,并且最好超过成本。

如果对该功能有一个简单的解决方法,则可能是成本可能(大大)高于潜在价值。

在您的情况下,您可以简单地分配grossSum而不是GrossSum。这是一个简单的解决方法

10-05 23:01