您好我正在使用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**
};
}
}
我看到我们无法将One Property的值分配给另一个属性,就像上面我尝试将GrossSum分配给GrossSumComp并且我得到了编译错误。只是好奇知道为什么它不允许这样。任何帮助都将被高度评价。
答案 0 :(得分:2)
因为它是如何指定的。第二行中的GrossSum
是对名为GrossSum
的变量的引用,而不是正在初始化的对象的属性。
用Eric Lippert的话来解释。对于要实现的功能,它必须是
这些都会产生成本,因此他们应该增加价值以匹配成本,最好超过成本。
如果对该功能进行简单的处理,可能的成本可能(很多)高于潜在价值。
在您的情况下,您只需指定grossSum
而不是GrossSum
。
答案 1 :(得分:1)
在这种情况下的错误信息是你的答案:
The name 'GrossSum' does not exist in the current context
如果没有给定的上下文,编译器如何知道GrossSum
是什么?无法指定this
或类似的东西,以表明您所引用的GrossSum
属性是在您正在初始化的对象上定义的属性。