【问题标题】:Adding a property to Add() method向 Add() 方法添加属性
【发布时间】: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#


【解决方案1】:
public int Total 
{
    get
    {
        return Quantity * UnitPrice;
    } 
    set
    {
    }
} 

改成

public int Total 
{
    get
    {
        return Quantity * UnitPrice;
    } 
} 

你可以使用只有 getter 的属性

【讨论】:

  • 并在添加属性时删除总字段。
【解决方案2】:

您没有为 Total 实现 setter,但尝试为其设置一些值。所以我建议在初始化逻辑中实现 setter 或删除 Total 的使用

public int Total {
                get
                {
                    return Quantity * UnitPrice;
                } 
                set
                {
                   // you need to add some code
                }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多