C: Как я могу использовать конструктор:конструктор с аргументами в C#
AcctHolder ah1 = new AcctHolder("Dumitru", "St", "Bucharest");
и быть в состоянии получить ah1.Fname
? (Вместо нулевой)
using System;
namespace ConsoleApplication1
{
class ATM
{
public static void Main(string[] args)
{
AcctHolder ah1 = new AcctHolder("Dumitru", "St", "Bucharest");
Console.WriteLine(ah1.FName); //returns null - why???
AcctHolder ah2 = new AcctHolder();
ah2.FName = "Dumi";
Console.WriteLine(ah2.FName); // returns "Dumi"
Console.ReadKey();
}
public class AcctHolder
{
private string fname, lname, city;
public string FName { get; set; }
public string LName { get; set; }
public string City {
get { return city; }
set { city = value; }
}
public AcctHolder(string a, string b, string c)
{
fname = a;
lname = b;
city = c;
}
public AcctHolder()
{
}
}
}
}
Этот ответ предполагает, что частные поля 'fname, lname, city' были полезны. На самом деле они избыточны, если вы предлагаете использовать свойства. Инициализация частных полей поддержки свойств (неавтоматически реализованных) в конструкторе фактически является лучшей практикой, поскольку вы можете быть уверены, что она не имеет побочных эффектов, как это имеет место, если свойство содержит другой код. –