Скажем, у меня есть класс с именем Customer
с некоторыми свойствами:Когда экземпляр класса возвращается, все свойства возвращаются?
public class Customer
{
public string CustAddr = GetCustAddr(); //Long procedure returning address
public double CustAcct = GetCustAcct(); //Long procedure returning account
public string CustInvoice = GetCustInvoice(); //Long procedure returning invoice
}
Этот класс возвращается через функцию:
public Customer GetData(string query)
{
Customer cust = new Customer();
//set the values for each of the properties
return cust;
}
Сейчас он возвращается весь класс, и я могу использовать его как это:
lblDisplay = GetData("QUERY").CustAddr.ToString();
Однако, предположим, что для каждой собственности требуется много времени для вычисления. Если мне нужно только значение CustAddr, оно все равно вычисляет и имеет CustAcct
и CustInvoice
для меня.
Как изменить свою функцию на только вернуть имущество, которое я ищу, кроме разрыва моего класса на отдельные процедуры для звонка? Например, я мог бы просто:
lblDisplay = GetCustAddr().ToString();
но это не то, что я ищу. Я думаю, что лучше иметь все мои данные в организованной структуре вместо нескольких различных процедур.
Это поля не свойства;) –
Предлагаю прочитать [В чем разница между полем и свойством в C#?] (Http://stackoverflow.com/questions/295104/what-is-the-difference-between -a-поле-и-свойство-в-с). –
Используйте ленивую инициализацию или прокси-шаблон. –