using System.Collections.Generic;
public enum Form { OOO, ZAO, OAO, Unknown }
public Person(string name, string surname, DateTime birth)
: this("UnknownName", "UnknownSurname", DateTime.Now)
_birth = new DateTime(value, _birth.Month, _birth.Day);
public override string ToString()
return String.Format("Имя: {0}\nФамилия: {1}\nДата рождения: {2}", _name, _surname, _birth.ToShortDateString());
public virtual string ToShortString()
return String.Format("Имя: {0}\nФамилия: {1}", _name, _surname);
private string _position;
public Employee(Person _pers, string _position, DateTime _work)
: this (default(Person), "UnknownPosition", DateTime.Now)
public Person EmpPers { get; set; }
public DateTime Work { get; set; }
public string Position { get; set; }
public override string ToString()
return String.Format("Работник {0}\n\n Должность: {1}\n Дата принятия на работу: {2}", _pers, _position, _work);
public class Organisation
public Organisation(string orgname, int regnum, Form form, Employee[] emp)
: this("UnknownOrgName", Convert.ToInt32("0"), Form.Unknown, default(Employee[]))
public Person FirstEmployee
var emp = _emp.OrderBy(x => x.Work).FirstOrDefault();
return emp == null ? null : emp.EmpPers;
public void AddEmployee(params Employee[] employees)
Employee[] result = new Employee[_emp.Length + employees.Length];
Array.Copy(_emp, result, _emp.Length);
Array.Copy(employees, 0, result, _emp.Length, employees.Length);
public override string ToString()
return String.Format("Название организации: {0}\nРегистрационный номер: {1}\nПравовая форма: {2}\nРаботники: {3}", _orgname, _regnum, _form, _emp);
public virtual string ToShortString()
return String.Format("Название организации: {0}\nРегистрационный номер: {1}\nПравовая форма: {2}", _orgname, _regnum, _form);
static void Main(string[] args)
Person pers1 = new Person();
Console.WriteLine("Экземпляр класса с полями, заполненными по умолчанию");
Console.WriteLine(pers1.ToString());
Console.WriteLine(pers1.ToShortString());
Console.WriteLine("Введите имя, фамилию, дату рождения через Enter");
DateTime.Parse(Console.ReadLine()));
Console.WriteLine("Возникла следующая ошибка: {0}", ex.Message);
Console.WriteLine("\nРезультат заполнения:\n{0}", pers2.ToString());
pers2.Surname = "Шариков";
Console.WriteLine("\nИзмененные свойства объекта pers2:");
Console.WriteLine(pers2.ToString());
var org1 = new Organisation("Васильки",1,Form.OAO, new Employee.);
Console.WriteLine(org1.ToShortString());
Console.WriteLine(org1[Form.OAO]);
Console.WriteLine(org1[Form.OOO]);
Console.WriteLine(org1[Form.ZAO]);
org1.OrgName = "Ромашки";
org1.FormForm = Form.ZAO;
Console.WriteLine(org1.ToString());
org1.AddEmployee(new Employee(new Person("Василий", "Пяточкин", new DateTime(12, 12, 1990)), "Садовник", new DateTime(21, 11, 2010)), new Employee(new Person("Петр", "Ложкин", new DateTime(26, 02, 1985)), "Дворник", new DateTime(15, 09, 2009)));