我怎么能只编程getter属性?

时间:2016-01-21 16:49:48

标签: c# winforms visual-studio

我试图只在C#编程getter,它向我显示了这个错误:

  

“错误7'NET.BusinessTier.SalesQuote.AmountDue.get'必须声明一个正文,因为它没有标记为抽象或外部。自动实现的属性必须定义get和set访问器。”

我编程了,不需要任何二传手。我该如何解决? link to my assignment

public decimal Salestax { get; }

3 个答案:

答案 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,因为您无法从初始值更新它。您可能想要创建属性,以便无法从类外部设置它,这在这种情况下最可能是您正在寻找的。

为此,您的财产将如下所示:

public double SalesTax { get; private set; }

这允许您在此类中更改SalesTax的值。程序的其他区域可以读取此属性,但它们永远不会更改值。

答案 2 :(得分:0)

public decimal Salestax { get; }

编译器能够告诉它,编译器注意到这个属性永远不会有“0”以外的东西并引发这个错误,因为它知道这行代码没有意义。

如果你只想让这个变量返回一个常数值,你可以继续使用RenéVogt的答案并只分配这个值。

如果你还没有实施这个变量,我认为明确这样说是个好习惯:

public decimal Salestax { get { throw new NotImplementedException(); } }