【发布时间】:2015-04-27 11:02:20
【问题描述】:
我正在尝试将属性添加到 Add() 方法,但它似乎不起作用。我确定我错过了什么。
Items.Add(new ItemProperties
{
Item = Convert.ToInt32(lines[i]),
Description = lines[i + 1],
Quantity = Convert.ToInt32(lines[i + 2]),
UnitPrice = Convert.ToInt32(lines[i + 3]),
Tax = Convert.ToInt32(lines[i + 4]),
TotalTax = 34234,
Total //<-- Error: Invalid initializer member declarator
});
ItemProperties类:
public class ItemProperties
{
public int Item { get; set; }
public string Description { get; set; }
public int Quantity { get; set; }
public int UnitPrice { get; set; }
public int Tax { get; set; }
public int TotalTax { get; set; }
public int Total {
get
{
return Quantity * UnitPrice;
}
set
{
}
}
}
我遇到两个错误:
初始化器成员声明器无效
当前上下文中不存在名称“Total”
我希望Total 属性做的是将Quantity * UnitPrice 的结果添加到Add() 方法
【问题讨论】:
-
删掉那行,没有意义。也摆脱空设置器。
-
@HansPassant 谢谢!
-
您不想“将 Quantity * UnitPrice 的结果添加到 Add() 方法中”。您希望
Total自动返回Quantity * UnitPrice,它已经这样做了。 -
虽然这很容易被编译器检测到,但错误消息是如此糟糕并且确实没有抓住重点,这仍然令人好奇。
-
@Georg:为什么?编译器是对的。在没有赋值的情况下声明像
Total这样的初始化成员是无效的。并且Total不是可用的方法或属性是正确的,因为Total在没有ItemProperties的实例的情况下使用。编译器不知道您的意思是ItemProperties的属性。怎么可能指望他知道呢?
标签: c#