创建存储实例的属性c#

时间:2013-11-26 07:27:51

标签: c# properties instance

我认为这些问题很简单,直到我意识到它所引用的TableOrder实例包含两个属性(一个食物和一个饮料)。

  1. 在初始化时,TableBill的实例将接受两组参数之一: 一个。该法案所涉及的表号。要么 湾表编号和已为该表放置的订单。
  2. 请注意,初始化选项为创建尚未包含此表的订单的帐单实例留出了空间。提供一个名为Order的属性,该属性将允许存储和检索TableOrder实例。
  3. 所以我的问题是,这是否意味着我需要存储这两个属性,还是为TableOrder创建一个新属性? (我怀疑后者是因为这个类被称为TableOrder。

    我已经醒了24小时,现在我正在努力理解这些问题。

    任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

public class TableBill
{
    // the first way of initializing - by just passing the table number
    public TableBill(int tableNumber)
    {
        this.TableNumber = tableNumber;
    }

    // second option will use the first constructor to set table number (the ':this()' line)
    // and then set the order
    public TableBill(int tableNumber, TableOrder order)
        : this(tableNumber)
    {
        this.Order = order;
    }

    // the table number property has a private setter, so it will only be set 
    // from the constructors.
    public int TableNumber { get; private set; }

    // a completely public property for setting the order
    public TableOrder Order { get; set; }
}

您还可以选择使用可选参数将两个构造函数合并为一个:

public TableBill(int tableNumber, TableOrder order = null)
{
    this.TableNumber = tableNumber;
    this.Order = order;
}

答案 1 :(得分:0)

当第一个问题谈到On initialisation时,它可能意味着使用构造函数。

你的课可能是这样的:

public class TableBill
{
    public Order Order
    {
        get
        {
            return this._order;
        }
        set
        {
            this._order = value;
        }
    }
    private Order _order = null;

    public TableBill(int tableNumber)
    {
        // ...
    }

    public TableBill(int tableNumber, Order order)
    {
        // check for nulls etc...

        // ...
        this.Order = order;
    }
}