рдорд┐рдиреА-рдкрд╣реЗрд▓реА: "рдУрд▓реНрдб-рд╕реНрдХреВрд▓" рдЯреНрд░реА

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди





рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ, рдПрд░рд┐рдХ рд▓рд┐рдкрд░реНрдЯ рдиреЗ рдЕрдкрдиреЗ рд╢рд╛рдирджрд╛рд░ рдПрдбрд╡реЗрдВрдЪрд░реНрд╕ рдЗрди рдХреЛрдбрд┐рдВрдЧ рдмреНрд▓реЙрдЧ рдкрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдордиреЛрд░рдВрдЬрдХ рдХрд╛рд░реНрдп рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛:



рдПрдХ рдкреЗрдбрд╝ рд╣реИ рдЬрд┐рд╕реЗ рдиреЛрдб рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА рдиреЛрдб рд╡рд╛рд▓реЗ рдмрдЪреНрдЪреЗ рдФрд░ рдХреБрдЫ рдкрд╛рда рд╣реИрдВ (рдореИрдВ рдиреАрдЪреЗ рдПрдХ рдХрдХреНрд╖рд╛ рдХреЛрдб рджреВрдВрдЧрд╛)ред рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд▓рд╛рдЗрди (рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╕рд╣рд┐рдд) рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

рдЖрдкрдХреЛ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ "un se тФФ (" (рдЫрджреНрдо рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ)ред рдПрд░рд┐рдХ рдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдЬреЛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╕рдордп рдХреНрдпрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ рд╣реЛрдВрдЧреА: рдкреБрдирд░рд╛рд╡рд░реНрддреА (рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ), рддреЗрдЬ рдпрд╛ рдЕрдзрд┐рдХ рдкрдардиреАрдпред





рд╕реНрд░реЛрдд рдХреЛрдб рдХрдХреНрд╖рд╛ рдиреЛрдб:

class Node<br>{<br> public Node( string text, params Node[] children)<br> {<br> this .Text = text;<br> this .Children = children ?? new Node[] {};<br> }<br> public string Text { get ; private set ; }<br> public IList<Node> Children { get ; private set ; }<br>} <br><br> * This source code was highlighted with Source Code Highlighter .







рд╕реНрд░реЛрдд рдбреЗрдЯрд╛:

var root = new Node( "a" , <br> new Node( "b" ,<br> new Node( "c" , <br> new Node( "d" )),<br> new Node( "e" ,<br> new Node( "f" ))),<br> new Node( "g" , <br> new Node( "h" ,<br> new Node( "i" )),<br> new Node( "j" ))); <br><br> * This source code was highlighted with Source Code Highlighter .







рдХрд╛рд░реНрдп рдпрд╣рд╛рдВ рд▓рд╛рдкрддрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рднрд░рдирд╛ рд╣реИ:

sealed class Dumper<br>{<br> static public string Dump(Node root) { /* ... */ }<br> /* ... */ <br>} <br><br> * This source code was highlighted with Source Code Highlighter .







рд╕рдорд╛рдзрд╛рди





рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд╣реИрдмрд░рдкреЗрдЬрд╝рд░ рдореЗрдВ "<рд╕реНрдкреЙрдЗрд▓рд░>" рдЯреИрдЧ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЦреБрд╢реА рд╕реЗ рдЦреБрдж рдХреЛ рд╡рдВрдЪрд┐рдд рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛ рдФрд░ рдереЛрдбрд╝рд╛ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред



рд▓реЗрдХрд┐рди рдореИрдВ рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдЦрддреЗ рд╣реБрдП рдПрдХ рджрд░реНрдЬрди рдорд┐рдирдЯ рдмрд┐рддрд╛рдПрдБред рдпрджрд┐ рдХреЛрдИ рдЖрдИрдбреАрдИ рдпрд╛ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рд╕реНрдирд┐рдкреЗрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ .NET 3.5 рдХреЗ рд▓рд┐рдП рд╣реИ, 4.0 рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ - рддрд╛рдХрд┐ рдХреЛрдб рдкреВрд░реНрдгрддрд╛ рдХреЗ рд╕рд╛рде, рдмрд┐рдирд╛ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдП)ред



рдкрд╣рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рд╕рдмрд╕реЗ LINQ-way рдЬрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрд╣ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рдХрд▓рд╛ - рд▓рд╛рдЗрдирдХ рдЬреИрд╕рд╛ рд╡рд┐рдХрд▓реНрдк ред рдХреЛрдб рдореЗрдВ рд╕рднреА рдЯреНрд░реА рдиреЛрдбреНрд╕ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреЛрдиреЛрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕рдВрд▓рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЧрдгрдирд╛ "рдЖрд▓рд╕реА" рд╣реИ, рд╕рднреА рд▓рд╛рдЗрдиреЗрдВ рдпрд╛ рддреЛ StringBuilder рджреНрд╡рд╛рд░рд╛ рдпрд╛ LinkedList рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдлрд┐рд░ Join рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдпрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред



рд╡рд┐рдХрд▓реНрдк рдзреАрдорд╛ рдирд┐рдХрд▓рд╛ред рдмрд╣реБрддред



рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛


рдЖрд▓рд╕реА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ, рдЖрджрд┐ред рдмреЗрд╢рдХ рдпрд╣ рд╕реБрдВрджрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ "рд╕реНрддрд░" рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдПрдХ рдирдпрд╛ рд╕реНрддрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рднреА рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрдВрдЯреЗрдирд░ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рд╡рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрд▓, рд▓реЗрдХрд┐рди, рдЗрд╕ рдмрд╛рд░, рдЗрдВрдбреЗрдВрдЯ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдФрд░ рдлрд┐рд░, рдХреЛрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд╣реАрдВ - рдкреЗрдбрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред



рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдореИрдВ рдЕрднреА рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЪрд▓рд╛ рдЬрд╛рдКрдВрдЧрд╛, рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрднреА-рдХрднреА рдПрд░рд┐рдХ рдХреЗ "рд╡рд┐рд╕реНрддреГрдд" рд╕рдВрд╕реНрдХрд░рдг (рдЬреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЕрдзрд┐рдХ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ) рд╕реЗ рднреА рддреЗрдЬ рд╣реИред



рдПрд░рд┐рдХ рдХрд╛ рдлреИрд╕рд▓рд╛


рдЦреИрд░, рдПрд░рд┐рдХ рдХрд╛ рдлреИрд╕рд▓рд╛ ред рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕рдореЗрдВ рдореИрдВрдиреЗ рдЕрдкрдиреЗ "рддреНрд╡рд░рд┐рдд" рдирд┐рд░реНрдгрдп рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрд╛рдпрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдХреИрд╕реЗ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ "рдмрдЪреНрдЪреЛрдВ" рдХреА рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рд╣реИ рдпрд╛ рдирд╣реАрдВред



рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкрд╕рдВрдж рдЖрдИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ-рджреЛ рдмрд╛рд░ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рд╣рд▓ рдХрд░рдирд╛ рдерд╛ред рдФрд░ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреЛ рдлреИрд▓рд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред



рдпрджрд┐ рдХреЛрдИ рднреА рддреЗрдЬрд╝ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ - рд▓рд┐рдЦреЛ, рддреЛ C # рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдЦреЗрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рд╛рдпрдж рдореЗрд░реА рдкреЛрд╕реНрдЯ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреА рдЬреЛ рдХрд┐ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ: рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП IEnumerable рджреЛрдиреЛрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдФрд░ рдирд╣реАрдВ; рдПрдХ рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд╛рд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдгред



рдЦреИрд░, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рддреБрдЪреНрдЫ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВред



рдпреБрдкреАрдбреА:

рдПрд░рд┐рдХ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ lam0x86 рдХрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг: рд╡реЙрдЪ

рд▓рд╛рдЗрдирдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕реНрдЯреЗрдХ рд╕реЗ рджреЛ рдмрд╣реБрдд рд╣реА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рдХрд▓реНрдк



All Articles