рдХреБрдЫ рдкрд╛рдардХреЛрдВ рдХреЛ рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ, рд╢рд╛рдпрдж рджреЗрд░ рддрдХ рдХрд╛рдо рдкрд░ рд░рд╣реЗ рдФрд░ рдбрд┐рдмрдЧрд░ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдПред рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд╡рд╛рдХреНрдп рдФрд░ рдХрдардмреЛрд▓реА рд╢рдмреНрджреЛрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рд╢рдмреНрджрдЬрд╛рд▓ рд╕реЗ рд╣рдЯрдХрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░реЗрдВ:
- рдЯрд╛рдЗрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди: рдпрд╣ рд╡рд╣ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рднреА рд╕реНрдЯреИрдЯрд┐рдХ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ;
- рд▓реВрдкрд┐рдВрдЧ: рдХреЛрдб рдХреЗ рджреЛ рдЯреБрдХрдбрд╝реЗ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рджреЛ рд╡рд░реНрдЧ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рджреВрд╕рд░реЗ рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЦреИрд░, рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рдХрд┐ рдХреНрдпрд╛ рджрд╛рдВрд╡ рдкрд░ рд╣реИ:
using System; class Test { static void Main() { Console.WriteLine(First.Beta); } } class First { public static readonly int Alpha = 5; public static readonly int Beta = Second.Gamma; } class Second { public static readonly int Gamma = First.Alpha; }
рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо 0 рд╣реЛрдЧрд╛рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдХреЛрдИ рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рдорд╛рдиреНрдпрддрд╛рдУрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреАред рдЗрд╕рд▓рд┐рдП, рдЖрдЗрдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦреЗрдВ (C # 4 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЦрдВрдб 10.5.5.1):
рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдЪрд░ рдЖрд░рдВрднреАрдХрд░рдг рдЙрди рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд╛рда рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдХрдХреНрд╖рд╛ рдШреЛрд╖рдгрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рд╕реНрдерд┐рд░ рд░рдЪрдирд╛рдХрд╛рд░ (.1210.12) рд╡рд░реНрдЧ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрд░рдВрднрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЙрд╕ рд╕реНрдереИрддрд┐рдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╢реБрд░реБрдЖрддреА рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди-рдирд┐рд░реНрднрд░ рд╕рдордп рдкрд░ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреБрд╡рд╛рдж:
рд╡рд░реНрдЧ рдХреЗ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдо рд╡рд░реНрдЧ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЙрдирдХреЗ рд╕реНрдерд╛рди рдХреЗ рдХреНрд░рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕реНрдЯреИрдЯрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕реНрдЯреИрдЯрд┐рдХ рдлреАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрджрд┐ рд╕реНрдерд┐рд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдереИрддрд┐рдХ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рд╕реНрдЯреИрдЯрд┐рдХ рдлрд╝реАрд▓реНрдб рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред
рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк
CLI
рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдПрдХ рдЕрдВрд╢ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЯрд╛рдЗрдк рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдХреБрдЫ рдЕрдВрд╢реЛрдВ рдХреЛ рд▓рд┐рдЦреВрдВрдЧрд╛:
- рдЯрд╛рдЗрдк рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА
- рдпрджрд┐
CLI
рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдП рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рдереНрд░реЗрдб рдореЗрдВ рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреА рд╣реИ, рддреЛ CLI
рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЯрд╛рдЗрдк рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд░рдВрднрд┐рдХ рдерд╛ред
рддреЛ рдЖрдкрдХреА рд░рд╛рдп рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ
Test
: рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред - рд╕реНрдЯрд╛рд░реНрдЯ
Main
First
рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ First
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред First.Beta
)First.Alpha
рд╕реЗрдЯ рдХрд░реЗрдВSecond
рдЖрд░рдВрдн рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ Second
рдЪрд╛рд╣рд┐рдПред Second.Gamma
)- рджреВрд╕рд░рд╛ рд╕реЗрдЯ рдХрд░реЗрдВред
Second.Gamma
рдХреЛ First.Alpha
Second.Gamma
рдкрд░ First.Alpha
(5) - рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрдн
Second
- рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд░реЗрдВред
First.Beta
рд╕реЗ Second.Gamma
(5) - рдЖрд░рдВрднрд┐рдХ рд╕рдорд╛рдкреНрддрд┐
First
- "5" рдЯрд╛рдЗрдк рдХрд░реЗрдВ
рдФрд░ рдпрд╣рд╛рдБ рд╡рд╣реА рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ - .net рдлреНрд░реЗрдорд╡рд░реНрдХ 4.5 рдмреАрдЯрд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдЖрд░рдВрднреАрдХрд░рдг
.NET .NET рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ .Net 4.5 рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ред рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ)
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ
Test
: рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред - рд╕реНрдЯрд╛рд░реНрдЯ
Main
First
рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ First
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред First.Beta
)Second
рдЖрд░рдВрдн рдХрд░рдирд╛ (рд╣рдореЗрдВ Second
рдЪрд╛рд╣рд┐рдПред Second.Gamma
)- рджреВрд╕рд░рд╛ рд╕реЗрдЯ рдХрд░реЗрдВред
Second.Gamma
рдХреЛ First.Alpha
(0) - рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрдн
Second
First.Alpha
рд╕реЗрдЯ рдХрд░реЗрдВ- рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд░реЗрдВред
First.Beta
рд╕реЗ Second.Gamma
(0) - рдЖрд░рдВрднрд┐рдХ рд╕рдорд╛рдкреНрддрд┐
First
- рдЯрд╛рдЗрдк реж
рдЪрд░рдг
(5) рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐
First
First.Alpha
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ
First
рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛
First.Alpha
ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдереНрд░реЗрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЪрд░ рдЕрднреА рддрдХ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдлрд╝ ...
(рдПрдХ рд╕реВрдХреНрд╖реНрдорддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрддреА рд╣реИ: рдХрд╛рд╕реНрдЯ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)
рд╡рд╛рдкрд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЬрдм рдкрд░рд┐рдкрддреНрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрдЧрд╛ред рдРрд╕реА рдЬрдЧрд╣реЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ
рдЧреАрдЬрд╝реЗрдирдмреИрдЧ рд╣реИ ред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо
Second
рдкрд╣рд▓реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рддреЛ рд╣рдореЗрдВ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛ред рдФрд░, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЖрдк рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕рднреА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓реЙрдиреНрдЪ рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╡реЗ рд╕рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ (рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ, рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред
рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ
Encoding.Utf8
ред
TimeZoneInfo.Utc
, рдпрд╛
TimeZoneInfo.Utc
ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпреЗ рд╕реНрдерд┐рд░ рдЧреБрдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐
public static readonly
public static get-only
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
public static readonly
public static get-only
рдЧреБрдг рд╕рдорд╛рди рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдорд┐рд▓рддреЗ рд╣реИрдВред
рдореЗрд░реА
рдиреЛрджрд╛ рдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреБрдЫ рдкрд▓ рд╣рдорд╛рд░реЗ рдЬреИрд╕реЗ рд╣реА рд╣реИрдВред рдФрд░ рд╕рднреА рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрдИ рдкреНрд░рдХрд╛рд░
рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ , рдЕрд░реНрдерд╛рддреНред рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпред рдпрд╣ рддрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЕрдкрдирд╛
UTC
рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдпрд╛
ISO calendar system
рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
ISO calendar system
ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдВрджрд░ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП) рдХрдИ рд╕реНрдерд┐рд░ рдЪрд░ рд╣реИрдВред рдпрд╣ рд╕рдм рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдзрд┐рдХ рдХрдард┐рди рдФрд░ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЬрдм рд╣рдо рдПрдХ рдирдпрд╛ рд╕реНрдереИрддрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмреНрд░реЗрдХрдбрд╛рдЙрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рддрддреНрдХрд╛рд▓ рдХрд╛рд░рдг рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рдХреЛрдб рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХреА рднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЕрдЧрд░ рдореИрдВрдиреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рддрдп рдХреА, рддреЛ рдпрд╣ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдирд╣реАрдВ рд╣реИред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдЯрд╛рдЗрдк рдХрд░реЗрдВ
рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрдм рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЧрд╛рд░рдВрдЯреА рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдХреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рд╣реИ рдХрд┐
AppDomain
рднреАрддрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдпрд╛ рдерд╛, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдЖрд░рдВрднреАрдХрд░рдг рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдХреЗ рд╕рд╛рде, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдЦреБрдж рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдЬрдм рдореИрдВ Noda Time рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдЪрдХреНрд░ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡реЗ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЖрд░рдВрднрд┐рдХ рд╣реЛрдВред рдпрджрд┐ рдЖрдк рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рд╣реА рдЪрдХреНрд░ рдореЗрдВ рд╣реЛрддреА рд╣реИред рдореИрдВ рдХрд┐рд╕реА рднреА рдЪрд░рдо рдорд╛рдорд▓реЛрдВ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЙрди рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ рдЬреЛ рд╕рдВрднрд╡ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреА рджреГрд╖реНрдЯрд┐ рдЦреЛрдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдмреНрд░реВрдЯ рдлреЛрд░реНрд╕ рдореЗрдердб - рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡ рд╕рд░реНрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред
рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рдореЛрдЯреА рдпреЛрдЬрдирд╛ рд╣реИ:
- рд╣рдо рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ;
- рд▓рдХреНрд╖реНрдп рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП:
- рдирдпрд╛ AppDomain рдмрдирд╛рдПрдБ
- рд╡рд╣рд╛рдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
- рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ (рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкрд░ рдПрдХреНрд╢рди рдХрд░реЗрдВ)
- рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрд░рдВрдн рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рджреЗрдЦреЗрдВ рдФрд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВред
- рд╕рд╛рд░рд╛рдВрд╢ рд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рджреЗрдЦреЗрдВ
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА рдЬрд╣рд╛рдВ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рдХреЗ рдПрдХ рдбрд╛рдЙрдирд▓реЛрдб рдореЗрдВ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛ рдФрд░ рдЪрдХреНрд░реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбрд╛рд▓реВрдВрдЧрд╛ред
рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ:
рдФрд░, рдЗрди рд╕рднреА рдЖрд░рдХреНрд╖рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ ... рдХреНрдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ? рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рдБред рдЗрд╕ рддрдХрдиреАрдХ рдиреЗ рдореБрдЭреЗ рдХрдИ рдХреАрдбрд╝реЗ рдвреВрдВрдврдиреЗ рдореЗрдВ рдорджрдж рдХреА рдЬреЛ рддрдп рд╣реЛ рдЧрдП рдереЗред
рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВ
рдЕрддреАрдд рдореЗрдВ, рдореИрдВрдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рдЯрд╛рдЗрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдСрд░реНрдбрд░ "рдлрд┐рдХреНрд╕реНрдб" рдХрд┐рдпрд╛ред рдЪрдХреНрд░ рдЕрднреА рднреА рдореМрдЬреВрдж рдереЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реНрдХреЗрд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдб рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ... рдФрд░ рдЕрдЧрд░ рдПрдХ рджрд┐рди рдЖрдкрдХреЛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдПрдХ рд▓реВрдк рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рджрд┐рдорд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣реЗрд▓реА рд╣реЛрдЧреА рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рд╕реНрдЯреИрдЯрд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╡рд┐рд▓рдВрдмрд┐рдд рдЖрд░рдВрдн рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдХреМрди рд╕рд╛
static readonly field
рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдЖрдк
static readonly property
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
static readonly property
, рдЬреЛ
internal static readonly field
рдХреЛ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб, рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ рд╡рд░реНрдЧ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХрд▓ рдХреЙрд▓ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рд╕рд╛рде рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐,
nested
рдкреНрд░рдХрд╛рд░ рдХреЛ рддрдм рддрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред
рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп:
рд╣рдо рд▓рд┐рдЦреЗрдВрдЧреЗ:
public static readonly Foo SimpleFoo { get { return Constants.SimpleFoo; } } private static class Constants { private static readonly int TypeInitializationChecking = NodaTime.Utility.TypeInitializationChecker.RecordInitializationStart();
рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реНрдерд┐рд░ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ Foo рдХрд╛ рдПрдХ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ Foo.Constants рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╣рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рдиреЗрд╕реНрдЯреЗрдб рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕реНрдерд┐рд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рднрдпрд╛рдирдХ рд▓рдЧрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рдореЗрд░рд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдпрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд░рдирд╛ рдФрд░ рдмреИрд╕рд╛рдЦреА рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рднрдВрдбрд╛рд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╛ рдЗрд╕рдХреЗ рдХреБрдЫ рднрд╛рдЧ) рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрди рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрд╛рдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдореМрдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛
NDepend
рдореЗрд░реА рдорджрдж
NDepend
рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдмрдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИрдХрд┐рдВрдЧ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ - рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рднрд░рд╛ рдХреЛрдбред рдФрд░ ... рдореБрдЭреЗ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рд╢рд░реНрдо рдЖ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐
Noda Time
рдореБрдЭреЗ рд╕рднреА рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдорд┐рд▓реАрдВред рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ - рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд╣рд╛рдВ рдЫрд┐рдкреА рд╣реБрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
рдЖрд╡реЗрджрди: рдкрд░реАрдХреНрд╖рдг рдХреЛрдб
TypeInitializationChecker
internal sealed class TypeInitializationChecker : MarshalByRefObject { private static List<Dependency> dependencies = null; private static readonly MethodInfo EntryMethod = typeof(TypeInitializationChecker).GetMethod("FindDependencies"); internal static int RecordInitializationStart() { if (dependencies == null) { return 0; } Type previousType = null; foreach (var frame in new StackTrace().GetFrames()) { var method = frame.GetMethod(); if (method == EntryMethod) { break; } var declaringType = method.DeclaringType; if (method == declaringType.TypeInitializer) { if (previousType != null) { dependencies.Add(new Dependency(declaringType, previousType)); } previousType = declaringType; } } return 0; }
TypeInitializationTest
[TestFixture] public class TypeInitializationTest { [Test] public void BuildInitializerLoops() { Assembly assembly = typeof(TypeInitializationChecker).Assembly; var dependencies = new List<TypeInitializationChecker.Dependency>();
