3

嗨,我正在使用 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,但我得到了编译错误。只是想知道为什么它不允许这样做。任何帮助都将受到高度重视。

4

2 回答 2

2

因为它是这样指定的。GrossSum第二行是对一个变量的引用,GrossSum而不是被初始化对象的属性。

套用埃里克·利珀特的话说。对于要实现的功能,它确实是

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

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

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

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

于 2013-01-31T11:46:21.477 回答
1

在这种情况下,错误消息是您的答案:

The name 'GrossSum' does not exist in the current context

GrossSum没有给定上下文,编译器如何知道什么是什么?无法指定this或类似的方式表明GrossSum您所指的属性是在您正在初始化的对象上定义的属性。

于 2013-01-31T11:45:44.887 回答