我试图只在C#编程getter,它向我显示了这个错误:
“错误7'NET.BusinessTier.SalesQuote.AmountDue.get'必须声明一个正文,因为它没有标记为抽象或外部。自动实现的属性必须定义get和set访问器。”
我编程了,不需要任何二传手。我该如何解决? link to my assignment
public decimal Salestax { get; }
答案 0 :(得分:1)
在C#6中你可以这样做:
public decimal Salestax { get; } = 42;
// or
public decimal Salestax_v2 => 43;
第一个版本是一个仅限getter的属性,初始化为42
。第二个版本是一个表达身体的成员。表达式(在这种情况下为43
)由对Salestax_v2
在C#6之前根本不可能,但你可以试试private
setter:
public decimal Salestax { get; private set; }
并在构造函数中设置值。
答案 1 :(得分:0)
通常,您不希望将属性设置为get,因为您无法从初始值更新它。您可能想要创建属性,以便无法从类外部设置它,这在这种情况下最可能是您正在寻找的。 p>
为此,您的财产将如下所示:
public double SalesTax { get; private set; }
这允许您在此类中更改SalesTax的值。程序的其他区域可以读取此属性,但它们永远不会更改值。
答案 2 :(得分:0)
public decimal Salestax { get; }
编译器能够告诉它,编译器注意到这个属性永远不会有“0”以外的东西并引发这个错误,因为它知道这行代码没有意义。
如果你只想让这个变量返回一个常数值,你可以继续使用RenéVogt的答案并只分配这个值。
如果你还没有实施这个变量,我认为明确这样说是个好习惯:
public decimal Salestax { get { throw new NotImplementedException(); } }