Мне потребовалась некоторая отладка, чтобы понять это (или я так думаю).Я дам вам код и посмотрю, что вы придумали.Существует простой класс Contact
с:
- Некоторые авто-свойства,
- Параметризованный конструктор, который всегда увеличивает свойство
Contact.ID
и устанавливает другие свойства в соответствии с аргументамиполучает - Конструктор без параметров, который всегда вызывает параметризованный конструктор со значениями по умолчанию.
Сначала посмотрите код;его вывод и вопрос следуют по коду:
using System;
class Program
{
private static void Main(string[] args)
{
Contact[] contacts_array = {
//Contact 0
new Contact(),
//Contact 1
new Contact {
Name = "contactName1",
Age = 40,
Email = "emailaddress1@email.com"
},
//Contact 2
new Contact {
Name = "contactName2",
Age = 41,
Email = "emailaddress2@email.com"
},
//Contact 3
new Contact("contactName3",
42,
"emailaddress3@email.com"),
};
foreach (var contact in contacts_array)
Console.WriteLine(contact);
Console.ReadLine();
}
}
public class Contact
{
public static int totalContacts = 0;
public int Id { get; private set; }
public string Name { get; set; }
public int? Age { get; set; }
public string Email { get; set; }
public Contact()
{
new Contact("ANONYMOUS", null, "ANONYMOUS@unknown.com");
}
public Contact(string name, int? age, string email)
{
Id = Contact.totalContacts++;
Name = name;
Age = age;
Email = email;
}
public override string ToString()
{
return string.Format("[Contact: Id={0}, Name={1}, Age={2}, Email={3}]",
Id, Name, Age, Email);
}
}
Вывод:
[Contact: Id=0, Name=, Age=, Email=]
[Contact: Id=0, Name=contactName1, Age=40, Email=emailaddress1@email.com]
[Contact: Id=0, Name=contactName2, Age=41, Email=emailaddress2@email.com]
[Contact: Id=3, Name=contactName3, Age=42, Email=emailaddress3@email.com]
Вопрос:
Почемуявляется Contact.ID == 0 во втором и третьем контактах, а не 1 и 2 соответственно, несмотря на то, что параметризованный конструктор всегда вызывается и всегда увеличивает свойство ID?