"рдЖрдкрдХреЛ рдХреБрдЫ рдореБрд╣рд╛рд╡рд░реЛрдВ рдХрд╛ рдкрд╛рд▓рди рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ"
рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рддреЗ рдФрд░ рд░рд┐рдлреИрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд╡рд┐рдЪрд╛рд░рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ .NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк
рдирдП рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рд╡рд╕реНрддреБ рдХреА "рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐" рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░реВрдЯ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕реЙрдХреЗрдЯ, рдПрдХ рдЕрдирд╡рд╛рдВрдЯреЗрдб рдореЗрдореЛрд░реА рдмрдлрд░, рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░, рдЗрддреНрдпрд╛рджрд┐, рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░, рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдзреЛрддрд╛ рд╣реИ рдФрд░ рдРрд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреВрд░реА рд╕реНрдорд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдЖрддреА рд╣реИред
рд▓реЗрдХрд┐рди рдлрд╛рдЗрдирд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХрд╛ рдХреНрдпрд╛? - рдЖрдк рдкреВрдЫреЗрдВред рдЦреИрд░, рд╣рд╛рдВ, рдРрд╕реА рдмрд╛рдд рд╣реИ, рдлрд╛рдЗрдирд▓рд░реНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдХреЙрд▓ рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреА рд╡рд╕реНрддреБ рдХреЗ рдХреБрдЫ "рднрд╛рдЧреЛрдВ" рдХреЛ рдкрд╣рд▓реЗ рд╣реА "рдирд╖реНрдЯ" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдЕрдВрддрд┐рдо рд░реВрдк рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдлрд╛рдЗрдирд▓ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рд░рд╕реНрд╕реА рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рди рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВред
рдореБрд╣рд╛рд╡рд░рд╛ RAII
рд╕реА ++ рдореЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ (*) рдХреЗ рд╕рдордп рдкрд░ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрди (рдпрд╛ рдореБрд╣рд╛рд╡рд░реЗ) рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдореБрд╣рд╛рд╡рд░реЗ рдХреЛ "рд╕рдВрд╕рд╛рдзрди рдЕрдзрд┐рдЧреНрд░рд╣рдг рдЗрдЬ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди" (рдЖрд░рдПрдЖрдИ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рд╕рдВрд╕рд╛рдзрди рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдирд┐рдпрддрд╛рддреНрдордХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рдХрд╛ рдПрдХ рд╣реА рд╡рд┐рдЪрд╛рд░ рднреА рдЕрдиреНрдп "рд╕реНрдорд╛рд░реНрдЯ" рдФрд░ "рдкреНрд░рдмрдВрдзрд┐рдд" рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреИрд╕реЗ рдХрд┐ .NET рдпрд╛ рдЬрд╛рд╡рд╛ (**) рдореЗрдВ рдПрдХ
рдЖрдИрдбреАрд╕реЛрдкреНрд▓реЙрд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╕реА # рдореЗрдВ) рдФрд░ рдПрдХ
рдирд┐рдкрдЯрд╛рди рд╡рд┐рдзрд┐ (рдЬрд╛рд╡рд╛ рдореЗрдВ) рдХреЗ рд░реВрдк рдореЗрдВред ред рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рдпреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдкреБрд░рд╛рдиреЗ C ++ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдорд╛рд░реНрдЯ рд╣реИрдВ, рдФрд░ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рд╕реЗ рдЬреБрдбрд╝реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдореБрд╣рд╛рд╡рд░рд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реБрдЖред рдирд╣реАрдВ, рдореБрдЭреЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреЗрдВ, рдпрд╣ рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ
рдЙрдкрдпреЛрдЧ рдмреНрд▓реЙрдХ (рд╕реА # рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛
рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрдпрд╛рди (рдЬрд╛рд╡рд╛ 7 рдореЗрдВ) рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ", рддреЛ рдЕрдкрдиреЗ рдирд┐рд░реНрдзрд╛рд░рдХ рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд░рд┐рд╣рд╛рдИ рдЯреНрд░реЗрд╕ рдирд╣реАрдВ рд░рд╣реЗрдЧреАред
// using
using ( FileStream file = File .OpenRead( "foo.txt" ))
{
//
if (someCondition) return ;
// using
}
// , - using?
FileStream file2 = File .OpenRead( "foo.txt" );
* This source code was highlighted with Source Code Highlighter .
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реИ рдЬреЛ .NET рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд▓реНрдж рд╣реА рджреЗрдЦреЗрдВрдЧреЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЪреВрдВрдХрд┐
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдХреНрд▓рд╛рд╕ рдХреЗ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддреА рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд╖реНрдЯ рдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдирд╖реНрдЯ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдФрд░ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдБрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдореБрд╣рд╛рд╡рд░реЗ RAII рдиреЗ .NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ "рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдкреИрдЯрд░реНрди" рдирд╛рдордХ рдПрдХ рдкреИрдЯрд░реНрди рдореЗрдВ рдлреИрд▓рд╛рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ .NET рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдореМрдЬреВрдж рд╣реИрдВ: рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиред
рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди
.NET рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ: рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рддред рдФрд░ рдЙрдиреНрд╣реЗрдВ рднреЗрдж рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ "рдХрдЪреНрдЪреЗ" рд╕рдВрд╕рд╛рдзрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐
рдЗрдВрдЯрдкреНрд░рд╛рдЯ , рдХрдЪреНрдЪреЗ рд╕реЙрдХреЗрдЯ рд╡рд┐рд╡рд░рдгрдХ, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ; рдЕрдЧрд░, RAII рдореБрд╣рд╛рд╡рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдореЗрдВ рдореБрдХреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд╕рдВрд╕рд╛рдзрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдмрдВрдзрд┐рдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП "рд╕реНрдорд╛рд░реНрдЯ рдЧреЛрд▓реЗ" рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐
рдЖрдИрдбреАрдЖрдИрд╕реЛрдлрд╝реЗрдХреНрдЯрд┐рд╡ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓
рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
class NativeResourceWrapper : IDisposable
{
// IntPtr тАУ
private IntPtr nativeResourceHandle;
public NativeResourceWrapper()
{
// ┬л┬╗
nativeResourceHandle = AcquireNativeResource();
}
public void Dispose()
{
// , , -
//
ReleaseNativeResource(nativeResourceHandle);
}
// ,
~NativeResourceWrapper() {...}
}
* This source code was highlighted with Source Code Highlighter .
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдИ рднреА рд╡рд╕реНрддреБ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ: рдЗрд╕рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
, IntPtr ) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
NativeResourceWrapper ) рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рд╣реЛрддреА рд╣реИ, рдпрд╣ рд╕реНрд╡рдпрдВ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдмрди рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдореМрд▓рд┐рдХ рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдбрд┐рд╕реНрдкреЛрдЬрд▓ рдкреИрдЯрд░реНрди
рддреЛ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╡рд╕реНрддреБ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ:
рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░
рдЕрдкреНрд░рдмрдВрдзрд┐рдд ; рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
рдирд┐рдпрддрд╛рдВрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдирд┐рдпрддрд╛рддреНрдордХ рдФрд░ рдЕрдВрддрд┐рдо (***) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ ред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЕрдЪреНрдЫреЗ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд░рд╣рдирд╛ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрдЪреНрдЫреЗ рдХреЛ рдХреИрд╕реЗ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдкреИрдЯрд░реНрди рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдЖрдЗрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рдкреВрд░реЗ рддрд░реНрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрд╕реЗ
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рд╕реЗ рдФрд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рджреЛрдиреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рдЬрдмрдХрд┐ рд╣рдо рдПрдХ рдзреНрд╡рдЬ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрд┐рд╕рдиреЗ рдХрд╣рд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рдЗрд╕ рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЖрдЗрдП рд╣рдо рдмрд┐рдВрджреБрдУрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдкреИрдЯрд░реНрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред
1. рдкреНрд░рдмрдВрдзрд┐рдд рдпрд╛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╡рд░реНрдЧ
рдЖрдИрдбреАрд╕реЛрдлрд┐рд░реЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
class Boo : IDisposable { ... }
* This source code was highlighted with Source Code Highlighter .
2. рдХрдХреНрд╖рд╛ рдореЗрдВ
рдбрд┐рд╕реНрдкреЛрдЬрд╝ ( рдмреВрд▓ рдбрд┐рд╕реНрдкреЛрдЬрд╝рд┐рдВрдЧ ) рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рд░рд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ;
рдбрд┐рд╕реНрдкреЛрдЬрд╝рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рд╕реЗ рдпрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЧреИрд░-рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП
рд╡рд░реНрдЪреБрдЕрд▓ рдФрд░ рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП
рдирд┐рдЬреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
// -sealed
protected virtual void Dispose( bool disposing) {}
// sealed
private void Dispose( bool disposing) {}
* This source code was highlighted with Source Code Highlighter .
3. рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд╣рд▓рд╛,
рдбрд┐рд╕реНрдкреЛрдЬрд╝ ( рд╕рдЪреНрдЪрд╛ ) рддрд░реАрдХрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░
рдЬреАрд╕реА рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
ред SuppressFinalize () , рдЬреЛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
public void Dispose()
{
Dispose( true /*called by user directly*/ );
GC.SuppressFinalize( this );
}
* This source code was highlighted with Source Code Highlighter .
рдЬреАрд╕реА рд╡рд┐рдзрд┐
ред SuppressFinalize () , рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
Dispose ( true ) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде
Dispose ( true ) рдореЗрдердб "рдлреЙрд▓реНрд╕" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╛рдЗрдирд▓ рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реА рдмрд╛рдд,
рдЬреАрд╕реА ред SuppressFinalize () рдХреЛ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рдирдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ рдкрд░ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рд╣рдореЗрдВ
GC рдХреЛ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП
ред SuppressFinalize () рд╕рднреА рдЧреИрд░-рд╕реАрд▓ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рдзрд┐)ред
4.
рдбрд┐рд╕реНрдкреЛрдЬрд╝ ( рдмреВрд▓ рдбрд┐рд╕реНрдкреЛрдЬрд╝рд┐рдВрдЧ ) рд╡рд┐рдзрд┐ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: (1) рдпрджрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ (рдЕрд░реНрдерд╛рдд,
рдбрд┐рд╕реНрдкреЛрдЬрд╝рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░
рд╕рд╣реА рд╣реИ ) рдХрд╣рд╛ рдЬрд╛рддрд╛
рд╣реИ , рддреЛ рд╣рдо рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ (2) рдпрджрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ (
рдбрд┐рд╕реНрдкреЛрдЬрд╝рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░
рдЧрд▓рдд рд╣реИ ), рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рддреЗ рд╣реИрдВред
void Dispose( bool disposing)
{
if (disposing)
{
//
}
//
}
* This source code was highlighted with Source Code Highlighter .
5. (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓
рдбрд┐рд╕реНрдкреЛрдЬрд╝ ( рдмреВрд▓ рдбрд┐рд╕реНрдкреЛрдЬрд╝рд┐рдВрдЧ ) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ
рдЧрд▓рдд рд╣реИ ред
~Boo()
{
Dispose( false /*not called by user directly*/ );
}
* This source code was highlighted with Source Code Highlighter .
рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рддреЛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдлрд╛рдИ рдХреЛрдб рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдЕрднреА рддрдХ рдХреИрдкреНрдЪрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ (****)ред
6. (рд╡реИрдХрд▓реНрдкрд┐рдХ) рд╡рд░реНрдЧ рдореЗрдВ
рдмреМрд▓ _ рдбрд┐рд╕реНрдкреЛрдЬрд▓ рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрдХреНрдд рд╣реИрдВред рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдпрд╛ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЪреВрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ)ред
void Dispose( bool disposing)
{
if (disposed)
return ; //
//
disposed = true ;
}
public void SomeMethod()
{
if (disposed)
throw new ObjectDisposedException();
}
* This source code was highlighted with Source Code Highlighter .
7. (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдПрдХ рд╡рд░реНрдЧ
CriticalFinalizerObject рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдЫрд╣ рдЕрдВрдХ рдХрдо рд╣реИрдВ рдФрд░ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рджреЗрд╢реА рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧрд╛рд░рдВрдЯреА рджреЗрддреА рд╣реИ:
- рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдлрд╛рдЗрдирд▓ рдХреЛ рдЬреЗрдЖрдИрдЯреА рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рддреБрд░рдВрдд рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рджреЗрд░реА рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдХреА рддреАрд╡реНрд░ рдХрдореА рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред
- рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рд╕реАрдПрд▓рдЖрд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЕрдВрджрд░ рдкрд╣реБрдВрдЪрдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реАрдПрд▓рдЖрд░ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ "рдорд╛рддреНрд░ рдирд╢реНрд╡рд░" рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдВрддрд┐рдо рд░реВрдк рдХреЛ рдХреНрд░рд┐рдЯрд┐рдХрд▓рдлрд╛рдЗрдирд▓рд╛рдЗрдЬрд╝рд░рдСрдмрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд╛рд░рд┐рд╕реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдкрдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдлрд╛рдЗрдирд▓ рд╕реЗ (рдпрджрд┐ рд╡реЗ рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдлрд╝рд╛рдЗрдирд▓реАрдЬрд╝рд░рдСрдмрдЬреЗрдХреНрдЯ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ) рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рддрд╣реИрдВрдбрд▓ рдлрд╝реАрд▓реНрдб рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
- рдЖрд╡реЗрджрди рдбреЛрдореЗрди рдХреЗ рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдЙрддрд░рд╛рдИ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдРрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдлрд╛рдЗрдирд▓ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
// , ?
class Foo : CriticalFinalizerObject {}
* This source code was highlighted with Source Code Highlighter .
рдбрд┐рд╕реНрдкреЛрдЬрд╝рд▓ рдкреИрдЯрд░реНрди рдкрд░ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирдЬрд╝рд░
рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .NET рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рдЦрдмрд░реЗрдВ рд╣реИрдВ: рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдорд╛рдЪрд╛рд░ "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ" рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд (*****) рд╕реЗ рднреА рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреВрд░реА рдЬрдЯрд┐рд▓рддрд╛ рдЗрд╕ рдзрд╛рд░рдгрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХрд┐ рдПрдХ рд╣реА рд╡рд░реНрдЧ (рдпрд╛ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо) рдПрдХ рд╕рд╛рде рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рджреЛрдиреЛрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реАрдзреЗ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЦреНрдпрд╛рдд рдПрдХрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд┐рджреНрдзрд╛рдВрдд (рдПрд╕рдЖрд░рдкреА) рдФрд░
рдХреЙрдорди рд╕реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд RAII рдореБрд╣рд╛рд╡рд░рд╛ рджрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╢реЗрд▓ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ ред
рдпрджрд┐ рдЖрдк .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╢реЗрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЕрдВрджрд░ рдЫрд┐рдкрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЙрд▓ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ, рд╕рд┐рд░реНрдл рдорд╛рдорд▓реЗ рдореЗрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреЛрд▓реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рд╕рдм рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐
рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рддрд░реНрдХ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред рд╡рд╣ рджреЛрдиреЛрдВ, рдФрд░ рджреВрд╕рд░рд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХрдард┐рди рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИред рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреИрдЯрд░реНрди рдПрдХ рдмрд╣реБрдд рд╣реА рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП "рдЕрдиреБрдХреВрд▓рд┐рдд" рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдЬрдмрдХрд┐ рд╕рдмрд╕реЗ рдЖрдо рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рдПрдХ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред
рдбрд┐рд╕реНрдкреЛрдЬрд▓ рдкреИрдЯрд░реНрди рдХрд╛ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг
рдпрджрд┐ рдЖрдк рдФрд░ рдореИрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рднреА рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдорд┐рд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпреЛрдВ рди рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП? рд╣рдо
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рдЕрд╢реЛрднрди рдмреВрд▓рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд
рдбрд┐рд╕реНрдкреЛрдЬрд╝ рд╡рд┐рдзрд┐ рдХреЗ
рдмрдЬрд╛рдп , рд╡рд░реНрдЪреБрдЕрд▓
рдбрд┐рд╕реНрдкреЛрдЬрд╝реНрдореИрдирдбреЗрдЬрд╝ рд╕реНрд░реЛрдд рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рд╣рдорд╛рд░реА
рдбрд┐рд╕реНрдкреЛрдЬрд▓ ( рдмреВрд▓) рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд рдЧреИрд░-рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдпрд╛ рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП
рдирд┐рдЬреА рд╕рдВрд░рдХреНрд╖рд┐рдд ред
class SomethingWithManagedResources : IDisposable
{
public void Dispose()
{
// Dispose(true) GC.SuppressFinalize()
DisposeManagedResources();
}
// ,
protected virtual void DisposeManagedResources() {}
}
* This source code was highlighted with Source Code Highlighter .
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЦреБрдж рдХреЗ рд▓рд┐рдП рдиреНрдпрд╛рдпрд╛рдзреАрд╢: рдкреБрд╕реНрддрдХ
рдлреНрд░реЗрдорд╡рд░реНрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ, рджреЛ рджрд░реНрдЬрди рдкреГрд╖реНрда рдбрд┐рд╕реНрдкреЛрдЬрд╝ рдкреИрдЯрд░реНрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВ, рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдпрджрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред рдЗрд╕реА рд╕рдордп, рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдмреБрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рдо рдПрдХ рдРрд╕реЗ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд╖реЗрдз рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХ рджрд░реНрдЬрди рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдХреНрд╖рд╛рдПрдВ рдпрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реИред рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдЕрдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рд░рдЦрд░рдЦрд╛рд╡ рдХреА рд▓рд╛рдЧрдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдпрджрд┐ рдЖрдк рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ рдХреНрд▓рд╛рд╕реЗрд╕ рдпрд╛ рд╕рд┐рдВрдкрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк "рдХреИрдирди" рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдмреЗрд╡рдХреВрдл рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
------------------------------
(*) C ++ рдореЗрдВ, C # рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореЗрдореЛрд░реА рднреА рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИред рдЗрд╕рд▓рд┐рдП, C ++ рдореЗрдВ RAII рдореБрд╣рд╛рд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ OS рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдпрд╛ рд╕реЙрдХреЗрдЯред
(**) рдЬрд╛рд╡рд╛ 7 рдореЗрдВ, рдЕрдВрддрдд: C #: try-with-resource рдХрдерди
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛
(***) рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, C # рдореЗрдВ, рдлрд╛рдЗрдирд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдлрд╛рдЗрдирд▓рд░реНрд╕ (рдХреНрд▓рд╛рд╕ рдирд╛рдо рдХреЗ рдмрд╛рдж рджрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЯрд┐рд▓реНрдб) рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ C ++ рдореЗрдВ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдФрд░ рдлрд╛рдЗрдирд▓ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдХ рд╡рд┐рдореЛрдЪрди рд╕реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
(***) рд╣рд╛рдБ, рдпрд╣ .NET рдФрд░ C ++ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рдФрд░ рдЕрдВрддрд░ рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдореЗрдВ, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдХреЗрд╡рд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдЙрд╕рдХреЗ рд╕рднреА рдкреВрд░реНрдг рдирд┐рд░реНрдорд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
(****) рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХреА рдХрд┐ рдЕрдкрд╡рд╛рдж рд╣реЛрдиреЗ рдпрд╛ рдкрд░рд╕реНрдкрд░ рд╕рд╛рд░реНрдердХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рд░рд┐рд╕реЛрд░реНрд╕ рд▓реАрдХ" рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐
рдЖрдЗрдбреАрдПрд╕реЛрдкрд╛рдпрд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдиреЛрдЯреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ "
рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА " рдФрд░ "рдХреНрд░рдорд╢рдГ
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЦрддрд░реЛрдВ рдкрд░, "ред