.NET рдХреЛрд░ 3.0 рдкрд░ C # 8.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЖрдк рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рджрд╕реНрдп рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдо рдкрд░рд┐рджреГрд╢реНрдп рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ:
- рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдПрдВред
- рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХреАрдХреГрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдПрдБред
- рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ
рдЖрдкрдХреЛ C # 8.0 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдВрдХрд▓рдХ рд╕рд╣рд┐рдд .NET рдХреЛрд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдорд╢реАрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред C # 8.0 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 , рдпрд╛ рдирд╡реАрдирддрдо .NET рдХреЛрд░ 3.0 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рджрд╕реНрдп .NET рдХреЛрд░ 3.0 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 4 рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдкрд░рд┐рджреГрд╢реНрдп рдЕрд╡рд▓реЛрдХрди
рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЧреНрд░рд╛рд╣рдХ рд╕рдВрдмрдВрдз рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЖрдк GitHub рдкрд░ рд╣рдорд╛рд░реЗ рдирдореВрдиреЗ рд░реЗрдкреЛ рдкрд░ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдВрдкрдиреА рдиреЗ рдореМрдЬреВрджрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рджрд┐рдпрд╛ рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдкреНрд░рджрд╛рди рдХреАрдВред
public interface ICustomer { IEnumerable<IOrder> PreviousOrders { get; } DateTime DateJoined { get; } DateTime? LastOrder { get; } string Name { get; } IDictionary<DateTime, string> Reminders { get; } }
рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рджреВрд╕рд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдПрдХ рдЖрджреЗрд╢ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ:
public interface IOrder { DateTime Purchased { get; } decimal Cost { get; } }
рдЙрди рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ, рдЯреАрдо рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдЕрдиреБрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреА рд╣реИред рдЙрдирдХрд╛ рд▓рдХреНрд╖реНрдп рдореМрдЬреВрджрд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧрд╣рд░рд╛ рд░рд┐рд╢реНрддрд╛ рдмрдирд╛рдирд╛ рдФрд░ рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╕реБрдзрд╛рд░рдирд╛ рдерд╛ред
рдЕрдм, рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдЕрдиреБрд░реЛрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЙрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рдлрд╛рджрд╛рд░реА рдЫреВрдЯ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдСрд░реНрдбрд░ рд╣реИрдВред рдЬрдм рднреА рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдИ рдСрд░реНрдбрд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдирдИ рд╡рдлрд╛рджрд╛рд░реА рдЫреВрдЯ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЫреВрдЯ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЧреНрд░рд╛рд╣рдХ рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред ICustomer рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рдлрд╛рджрд╛рд░реА рдЫреВрдЯ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдпрдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐рд╕реА рднреА рд╡рдлрд╛рджрд╛рд░реА рдЫреВрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде ICustomer
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрдврд╝рд╛рдирд╛ред рдЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реБрдЭрд╛рд╡ рдиреЗ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдЪрд┐рдВрддрд╛ рдкреИрджрд╛ рдХрд░ рджреА: "рдПрдХ рдмрд╛рд░ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ! рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рд╣реИ! тАЭ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C # 8.0 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗрдЦрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдирдП рд╕рджрд╕реНрдп рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реБрдП рднреА рдХрд┐рд╕реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЧреИрд░-рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЙрдирдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рднрд┐рдиреНрди рд╣реИрдВ, рддреЛ рд╡реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
рдЯреАрдо рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╕рд╣рдордд рд╣реБрдИ: рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рдлрд╛рджрд╛рд░реА рдЫреВрдЯред
рдЙрдиреНрдирдпрди рдХреЛ рджреЛ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: рдЫреВрдЯ рдХреЗ рд▓рд┐рдП рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдФрд░ рдЫреВрдЯ рдХрд╛ рдкреНрд░рддрд┐рд╢рддред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рдкрд░рд┐рджреГрд╢реНрдп рдмрдирд╛рддрд╛ рд╣реИред рдЖрдк ICustomer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдореМрдЬреВрджрд╛, рдФрд░ рдХреЛрдИ рднреА рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ:
рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛:
SampleCustomer c = new SampleCustomer("customer one", new DateTime(2010, 5, 31)) { Reminders = { { new DateTime(2010, 08, 12), "childs's birthday" }, { new DateTime(1012, 11, 15), "anniversary" } } }; SampleOrder o = new SampleOrder(new DateTime(2012, 6, 1), 5m); c.AddOrder(o); o = new SampleOrder(new DateTime(2103, 7, 4), 25m); c.AddOrder(o);
рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
SampleCustomer
рд╕реЗ SampleCustomer
рддрдХ ICustomer
рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред SampleCustomer
рд╡рд░реНрдЧ рдХреЛ SampleCustomer
рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдпрд╣ ICustomer
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, SampleCustomer
рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдирд┐рдпрдо рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдШреЛрд╖рд┐рдд рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд░ рдХреЛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкреНрд░рдХрд╛рд░, ICustomer
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдорд╛рдирдХреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реИред рд▓реЗрдХрд┐рди, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рд╣реИред рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрдИ рдЙрдкрднреЛрдХреНрддрд╛ рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рд╕рджрд╕реНрдпрддрд╛ рдХреА рдПрдХ рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ, рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рд╢рдд рдЫреВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдЙрдиреНрдирдпрди рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрди рддреАрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рдЙрд╕ рдЫреЛрдЯреЗ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдХрдИ рдирдИ рднрд╛рд╖рд╛ рдХреНрд╖рдорддрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИрдВред рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдм рд╕реНрдерд┐рд░ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╛рдпрд░ рднреА рд╕рдХреНрд╖рдо рд╣реИрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░ рдирд┐рдЬреА рд╣реИрдВ, рдирдИ рд╡рд┐рдзрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рджрд╕реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╢реЛрдзрдХ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
рд╡рдлрд╛рджрд╛рд░реА рдЫреВрдЯ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ, рдПрдХ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рд╡реЗ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд░реНрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдПрдХ "рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рд╢рдВрд╕рд╛" рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдПрдХ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
ICustomer.SetLoyaltyThresholds(new TimeSpan(30, 0, 0, 0), 1, 0.25m); Console.WriteLine($"Current discount: {theCustomer.ComputeLoyaltyDiscount()}");
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдврд╝рд╛рдПрдБ
рдЕрдм рддрдХ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдХреЛрдб рдиреЗ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрдВрддрд┐рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЙрди рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╡реЗ рдирдП рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╣рд▓реЗ рдСрд░реНрдбрд░ рдкрд░ 50% рдХреА рдЫреВрдЯ рджреЗрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдореМрдЬреВрджрд╛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдорд╛рдирдХ рдЫреВрдЯ рдорд┐рд▓рддреА рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗрдЦрдХ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдПрдХ protected static
рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡рд░реНрдЧ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рджрд╕реНрдп рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рд╕рд╛рдЭрд╛ рд╡рд┐рдзрд┐ рдХреЛ рднреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ:
public decimal ComputeLoyaltyDiscount() => DefaultLoyaltyDiscount(this); protected static decimal DefaultLoyaltyDiscount(ICustomer c) { DateTime start = DateTime.Now - length; if ((c.DateJoined < start) && (c.PreviousOrders.Count() > orderCount)) { return discountPercent; } return 0; }
рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдУрд╡рд░рд░рд╛рдЗрдб рд╕реНрдерд┐рд░ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ "рдирдпрд╛ рдЧреНрд░рд╛рд╣рдХ" рдЫреВрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рддрд░реНрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
public decimal ComputeLoyaltyDiscount() { if (PreviousOrders.Any() == false) return 0.50m; else return ICustomer.DefaultLoyaltyDiscount(this); }
рдЖрдк рд╣рдорд╛рд░реЗ [GitHub рдкрд░ рд╕реИрдВрдкрд▓ рд░реЗрдкреЛ] рдореЗрдВ рдкреВрд░рд╛ рддреИрдпрд╛рд░ рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк GitHub рдкрд░ рд╣рдорд╛рд░реЗ рд╕реИрдВрдкрд▓ рд░реЗрдкреЛ рдкрд░ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрди рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрди рдирдП рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдиреЗ рдкрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХрд▓ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВред рдЬрдм рдПрдХ рд╣реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдирдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИ рддреЛ рдЙрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред