Как предварительно установить значение в публичной структуре? - PullRequest
1 голос
/ 17 февраля 2012
public struct customerItemListStruct { 
        public int ID { get; set; } 
        public string name { get; set; } 
        public double rate { get; set; } 
        public int quantity { get; set; } 
        //public double total = rate * quantity; 

}

Я хочу предварительно установить значение total .

Предложи мне лучший способ! Спасибо!

Ответы [ 3 ]

5 голосов
/ 17 февраля 2012

Вы, вероятно, не должны использовать структуру для этой сущности. Изменчивые структуры являются злом и . Таким образом, ложь безумия .

Вероятно, было бы более уместно следующее:

public class CustomerItemList { 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public double Rate { get; set; } 
    public int Quantity { get; set; } 
    public double Total {
      get { return Rate * Quantity; }
    }
}
4 голосов
/ 17 февраля 2012
public double total
{
    get
    {
        return rate * quantity;
    }
}
2 голосов
/ 17 февраля 2012

Существующие ответы охватывают самый простой способ сделать это. Однако, если вы, скорее всего, будете получать доступ к Итоговому значению намного больше, чем вы, вероятно, будете обновлять Курс и Количество, вы можете изменить количество голосов таким образом, чтобы вместо расчета Total каждый раз, когда вы обращаетесь к нему, вы просто пересчитывали его при изменении Rate или Quantity.

public class CustomerItemListStruct { 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public double Total { get; private set; }

    public double Rate { 
        get { return _rate;}
        set { _rate = value; UpdateTotal();} 
    } 
    private double _rate;

    public int Quantity {
        get { return _quantity;}
        set { _quantity = value; UpdateTotal();} 
    }
    private int _quantity;


    private void UpdateTotal()
    {
        Total = Quantity*Rate;
    }
}

Как правило, выполнение Total выполнения расчетов - лучший способ, но всегда полезно знать об альтернативах, если они важны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...