рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рд╛рде рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдХрд░рдирд╛ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЙрддрдирд╛ рд╣реА рдпрд╣ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ - рдлрд┐рд░ рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдкрд┐рдЫрд▓реЗ рджреЛ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдзреНрдпрд╛рди рд╕реЗ рдЪрдпрдирд┐рдд рд╢рдмреНрдж рдЬреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╕рд╛рд░ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рджреЛ рд░реВрдкреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ: рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдФрд░ рдПрдХ рд╡рд╛рдХреНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред рдЬрдм рддрдХ рд╣рдо рдЗрд╕реЗ Thread.CurrentThread
рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рддрдм рддрдХ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ Thread.CurrentThread
рдЕрднреА рддрдХ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдиреЛрдЯреНрд╕ рдФрд░ рд╕рд░рд▓ рдзреБрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд, рдЕрдм рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рдВрдЧреАрдд рдХреНрдпрд╛ рд╣реИред
рд╕рд╛рдордЧреНрд░реА рдХреА рдЪрдХреНрд░ рддрд╛рд▓рд┐рдХрд╛
- рд╡рд╕реНрддреБрдПрдВ
- рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЧреБрдг
- рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб
рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб
рдЕрдзрд┐рдХрд╛рдВрд╢ рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдХреЗ рдмрдЬрд╛рдп рдмрд╛рд╣рд░реА рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдкрдврд╝рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИрдВред рдмреЗрд╢рдХ, рдореБрдлреНрдд рдореЗрдВ рдирд╣реАрдВ: рд╕рд╛рдордЧреНрд░реА рдПрдХ рдЕрд░реНрде рдореЗрдВ рдХрдордЬреЛрд░ рд╣реИред рддреЛ, рдЪрд▓рд┐рдП FluentAssertions
рд╣реИрдВ, FluentAssertions
рдкреИрдХреЗрдЬ рдореЗрдВ FluentAssertions
рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: (2 + 2).Should().Be(4, because: "2 + 2 is 4!")
, рдФрд░, рдкрдврд╝рдиреЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖, because
рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Be()
рдЕрдВрджрд░ Be()
рдмрд▓реНрдХрд┐, error
рдпрд╛ error
ред рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ errorMessage
ред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдРрд╕реА рдЫреВрдЯ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рдЬрдм рд╣рдо рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдПрдХ рдкрд╛рда рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдШрдЯрдХ рд╕реНрд╡рдпрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ: рд╡реЗ рдЕрдм рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ "рдИрдерд░" рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ ред
рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреИрд╕реЗ рдЕрдиреБрднрд╡ рдмрди рдЬрд╛рддреЗ рд╣реИрдВред
Interlocked
рдореИрдВ рдЖрдкрдХреЛ Interlocked
рдорд╛рдорд▓реЗ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ Interlocked.CompareExchange(ref x, newX, oldX)
рд╕реЗ Interlocked.CompareExchange(ref x, newX, oldX)
Atomically.Change(ref x, from: oldX, to: newX)
рдореЗрдВ рддрд░реАрдХреЛрдВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрд┐рдпрд╛ рд╣реИред
ExceptWith
рдЯрд╛рдЗрдк ISet<>
рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕реЗ ExceptWith
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк items.ExceptWith(other)
рддрд░рд╣ рдПрдХ рдХреЙрд▓ рдХреЛ items.ExceptWith(other)
рд╣реИрдВред items.ExceptWith(other)
, рдЖрдкрдХреЛ рддреБрд░рдВрдд рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдмрд╕ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛: items.Exclude(other)
, рдЬреИрд╕рд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рдЖрддрд╛ рд╣реИред
GetValueOrDefault
Nullable<T>
рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ Nullable<T>
x.Value
рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдЕрдкрд╡рд╛рдж null
рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ x
null
ред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА Value
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ x.GetValueOrDefault
рдЙрдкрдпреЛрдЧ x.GetValueOrDefault
: рдпрд╣ рдпрд╛ рддреЛ Value
рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИред рдмреЛрдЭрд┐рд▓ред
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "рдпрд╛ x, рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди" рд▓рдШреБ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг x.OrDefault
рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
int? x = null; var a = x.GetValueOrDefault();
OrDefault
рд╕рд╛рде рдФрд░ Or
рдлрд┐рд░ рдПрдХ рдмрд╛рдд рдпрд╛рдж рд░рдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ: рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп .?
рдЖрдк x?.IsEnabled.Or(false)
рдЬреИрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм IEnumerable<T>
рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
IEnumerable<int> numbers = null;
Math.Min
рдФрд░ Math.Max
Or
рд╕рд╛рде рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк a
рдФрд░ b
рд╕реЗ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ: Math.Max(a, b)
рдпрд╛ a > b ? a : b
a > b ? a : b
ред рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдлреА рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддреЗ рд╣реИрдВред
рдЖрдк рдЗрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ: a.Or(b).IfLess()
- a
рдпрд╛ b
рдпрджрд┐ рдХрдо a
рддреЛ рд▓реЗ рд▓реЛ ред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд:
Creature creature = ...; int damage = ...;
string.Join
рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдпрд╛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдХрд░рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, string.Join
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, string.Join(", ", new [] { 1, 2, 3 }); // "1, 2, 3".
рдХрд░реЗрдВ, рдЬреИрд╕реЗ: string.Join(", ", new [] { 1, 2, 3 }); // "1, 2, 3".
string.Join(", ", new [] { 1, 2, 3 }); // "1, 2, 3".
ред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг "рдХреЙрдорд╛ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ" рдЕрдЪрд╛рдирдХ "рд╕реВрдЪреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирдВрдмрд░ рдкрд░ рдПрдХ рдХреЙрдорд╛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ " рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХреЛрдб рдирд╣реАрдВ рд╣реИред
var numbers = new [] { 1, 2, 3 };
Regex
рд╣рд╛рд▓рд╛рдВрдХрд┐, string.Join
рдХреЛ рдХрднреА-рдХрднреА рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдФрд░ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ string.Join
рдХрд╛рдлреА рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИред рдЬрд╣рд╛рдВ рдЖрдк рд╕рд░рд▓, рдкрдардиреАрдп рдкрд╛рда рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдЕрддрд┐рд╡реНрдпрд╛рдкреНрдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд╕рдВрдж рдХреА рдЬрд╛рддреА рд╣реИред
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ - рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ:
string id = ...;
рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд░реНрдг рд╣реИ:
string text = ...;
рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп, рдЙрддрдирд╛ рд╣реА рдХрдард┐рди рд╕рдорд╛рдзрд╛рди "рдкреИрдЯрд░реНрди": "Hello World"
"HelloWorld"
рд░рд┐рдХреЙрд░реНрдб рдХреЛ "Hello World"
рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдмрдЬрд╛рдп рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рд░рд╛рдХреНрд╖рд╕ рдЪрд╛рд╣рддрд╛ рдерд╛:
string text = ...;
рдирд┐рд╕реНрд╕рдВрджреЗрд╣, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рднрд╛рд╡реА рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд╣рд▓реА рдирдЬрд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
Substring
Remove
рдФрд░ Remove
рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╢реБрд░реБрдЖрдд рдпрд╛ рдЕрдВрдд рд╕реЗ рд▓рд╛рдЗрди рд╕реЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, path
- рд╡рд┐рд╕реНрддрд╛рд░ .txt
, рдпрджрд┐ рдХреЛрдИ рд╣реЛред
string path = ...;
рдлрд┐рд░ рд╕реЗ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЪрд▓реЗ рдЧрдП рдереЗ , рдФрд░ рдЕрдВрдд рдореЗрдВ .exe рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд░рд▓ рд░реЗрдЦрд╛ рдЫреЛрдбрд╝ рджреА рдЧрдИ рдереА ред
рдЪреВрдБрдХрд┐ Without
рд╡рд┐рдзрд┐ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд WithoutExpression
рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡реЗ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рднреАрдЦ рдорд╛рдБрдЧрддреЗ рд╣реИрдВ: path.Without("_").AtStart
рдФрд░ path.Without("Something").Anywhere
ред рдпрд╣ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдПрдХ рд╣реА рд╢рдмреНрдж рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: name.Without(charAt: 1)
- рд╕реВрдЪрдХрд╛рдВрдХ 1 рдкрд░ рдЪрд░рд┐рддреНрд░ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдИ рд▓рд╛рдЗрди рджреЗрддрд╛ рд╣реИ (рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреА рдЧрдгрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧреА)ред рдФрд░ рдкрдардиреАрдп рднреА!
Type.GetMethods
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реАрдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
Type type = ...;
(рд╡рд╣реА GetFields
рдФрд░ GetFields
рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред)
Directory.Copy
рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ DirectoryUtils
, FileSystemHelper
рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрд╛рдИрдкрд╛рд╕, рд╕рдлрд╛рдИ, рдирдХрд▓ рдЖрджрд┐ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдЖрдк рдХреБрдЫ рдмреЗрд╣рддрд░ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ!
"рдбреА: \ рд╕реНрд░реЛрдд 'рд╕реЗ' рдбреА: \ рд▓рдХреНрд╖реНрдп 'рддрдХ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ "D:\\Source".AsDirectory().Copy().Files.To("D:\\Target")
рдХреЛрдб "D:\\Source".AsDirectory().Copy().Files.To("D:\\Target")
ред AsDirectory()
- string
рд╕реЗ DirectoryInfo
рджреЗрддрд╛ рд╣реИ, рдФрд░ Copy()
- CopyExpression
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп API рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ (рдЖрдк Copy().Files.Files
рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Copy().Files.Files
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Copy().Files.Files
)ред рдлрд┐рд░ рдЕрд╡рд╕рд░ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ: Copy().Files.Where(x => x.IsNotEmpty)
ред
GetOrderById
рджреВрд╕рд░реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдХрд┐ IUsersRepository.GetUser(int id)
рдмреЗрдорд╛рдиреА рд╣реИ, рдФрд░ рдмреЗрд╣рддрд░ рд╣реИ, IUsersRepository.User(int id)
ред рддрджрдиреБрд╕рд╛рд░, рдПрдХ рд╕рдорд╛рди IOrdersRepository
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ GetOrderById(int id)
, рд▓реЗрдХрд┐рди Order(int id)
ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдРрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ _ordersRepository
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ _orders
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкрдврд╝рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рдХреЙрд▓рд┐рдВрдЧ _orders.Order(id)
рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ _orders.Get(id)
, рд▓реЗрдХрд┐рди рдЖрджреЗрд╢ рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ рдЙрд╕реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ ред рдПрдХ рд╣реИ рдХрд┐ One
, рдЗрд╕рд▓рд┐рдП:
IOrdersRepository orders = ...; int id = ...;
GetOrders
IOrdersRepository
рдЬреИрд╕реА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ, рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдХреНрд╕рд░ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ: AddOrder
, RemoveOrder
, GetOrders
ред рдкрд╣рд▓реЗ рджреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдБ рдЪрд▓реА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ Add
рдФрд░ Remove
рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдЗрд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде _orders.Add(order)
рдФрд░ _orders.Remove(order)
)ред GetOrders
рд╕рд╛рде GetOrders
Orders
рдереЛрдбрд╝рд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдХрдард┐рди рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ:
IOrdersRepository orders = ...;
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреБрд░рд╛рдиреЗ _ordersRepository
GetOrders
рдпрд╛ GetOrderById
рдХреЙрд▓ рдореЗрдВ repetitions рдЗрддрдиреЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ!
One
рдЬреИрд╕реЗ рдирд╛рдо, All
рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ рдЬреЛ рдХрдИ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдХрд╣реЛ, GitHub API рдХреЗ рдкреНрд░рд╕рд┐рджреНрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ - octokit
- рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ gitHub.Repository.GetAllForUser("John")
рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ - gitHub.Users.One("John").Repositories.All
ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдХреНрд░рдорд╢рдГ gitHub.Repository.Get("John", "Repo")
рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ gitHub.Users.One("John").Repositories.One("Repo")
ред рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛ рд▓рдВрдмрд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд╣реИ рдФрд░ рдордВрдЪ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕реЗ gitHub.User("John").Repository("Repo")
рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ gitHub.User("John").Repository("Repo")
ред
Dictionary.TryGetValue
рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдВрдЬреА рдХреЗ рди рд╣реЛрдиреЗ рдкрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ:
- рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ (
dictionary[key]
); - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд▓реМрдЯрд╛рдПрдВ (рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░
TryGetValue
рдпрд╛ TryGetValue
); - рдХреБрдЫ рдФрд░ рд▓реМрдЯрд╛рдПрдВ (рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ
GetValueOrOther
рдЙрдореНрдореАрдж рд╣реИ); - рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ (рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди
GetOrAdd
рдХрд╛ GetOrAdd
)ред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ " рдХреБрдЫ X, рдпрд╛ Y рд▓реЗрддреА рд╣реИрдВ рдпрджрд┐ X рдирд╣реАрдВ рд╣реИ ред" рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ _ordersRepository
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдбрд┐рдХреНрд╢рдирд░реА рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ items
itemsDictionary
рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ items
itemsDictionary
ред
рдлрд┐рд░ "рдХреБрдЫ рдПрдХреНрд╕" рднрд╛рдЧ рдХреЗ рд▓рд┐рдП , рдлреЙрд░реНрдо items.One(withKey: X)
рдХрд╛ рдПрдХ рдХреЙрд▓ред рдПрдХ items.One(withKey: X)
рдЖрджрд░реНрд╢ рд╣реИ, рдЪрд╛рд░ items.One(withKey: X)
рд╕рд╛рде рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
Dictionary<int, Item> items = ...; int id = ...;
Assembly.GetTypes
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ T
рд╕рднреА рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП:
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрднреА-рдХрднреА, рдПрдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рд╣реИ ред
рдХреБрдЫ рдРрд╕рд╛ рд╣реА NUnit рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: Assert.That(2 + 2, Is.EqualTo(4))
- Is
рдФрд░ рдПрдХ рдЖрддреНрдордирд┐рд░реНрднрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред
Argument.ThrowIfNull
рдЕрдм рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдЬрд╛рдБрдЪ рдкрд░:
Ensure.NotNull(argument)
- рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдЕрдВрдЧреНрд░реЗрдЬреА рдирд╣реАрдВ рд╣реИред рдПрдХ рдФрд░ рдмрд╛рдд Ensure(that: x).NotNull()
рдКрдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдХреЗрд╡рд▓ рд╡рд╣рд╛рдБ ...
рд╡реИрд╕реЗ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рд╣рдо Contract.Ensure(that: argument).IsNotNull()
рд▓рд┐рдЦрддреЗ рд╣реИрдВред Contract.Ensure(that: argument).IsNotNull()
рдФрд░ using static
Contract
рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВред рдЕрддрдГ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ Ensure(that: type).Implements<T>()
, Ensure(that: number).InRange(from: 5, to: 10)
, рдЖрджрд┐ Ensure(that: number).InRange(from: 5, to: 10)
рд╣реЛрддреЗ рд╣реИрдВред
рд╕реНрдереИрддрд┐рдХ рдЖрдпрд╛рдд рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХрдИ рджрд░рд╡рд╛рдЬреЗ рдЦреЛрд▓рддрд╛ рд╣реИред items.Remove(x)
рдмрдЬрд╛рдп: рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рдЙрджрд╛рд╣рд░рдгред items.Remove(x)
Remove(x, from: items)
рд▓рд┐рдЦреЗрдВред рд▓реЗрдХрд┐рди рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреА рдХрдореА рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред
IItems items = ...;
рд╡рд┐рджреЗрд╢реА Find
C # 7.1 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ, рдЖрдк Find(1, @in: items)
, рдмрд▓реНрдХрд┐ Find(1, in items)
рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ Find
рдХреЛ Find<T>(T item, in IEnumerable<T> items)
рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЕрд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрдардиреАрдпрддрд╛ рдХреЗ рд╕рдВрдШрд░реНрд╖ рдореЗрдВ рд╕рднреА рд╕рд╛рдзрди рдЕрдЪреНрдЫреЗ рд╣реИрдВред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдореИрдВрдиреЗ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦрд╛ред рдЙрди рд╕рднреА рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ
Should().Be(4, because: "")
, Atomically.Change(ref x, from: oldX, to: newX)
ред - рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд░рд▓ рдирд╛рдо
Separated(with: ", ")
, Exclude
ред - рдЪрд░ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐
x.OrDefault()
, x.Or(b).IfLess()
, orders.One(with: id)
, orders.All
ред - рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐
path.Without(".exe").AtEnd
ред - рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд░
Instances.Of
, Is.EqualTo
ред - рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐ (
using static
) рдпрд╣ Ensure(that: x)
, items.All(Weapons)
ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрд╛рд╣реНрдп рдФрд░ рдЪрд┐рдВрддрди рдХреЛ рд╕рд╛рдордиреЗ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕реЛрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рддрд╛рд░реЛрдВ рдХреЛ рд╕реЛрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ, рдЬрдм рддрдХ рдХрд┐ рдХреЛрдб рдХреЛ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдиреНрдпрд╛рдпрд╛рдзреАрд╢ рдХреЛ рднрд╛рд╖рд╛ рдХрд╛ рдЙрддрдирд╛ рд╕реНрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ - рд╡рд╣ item.GetValueOrDefault
рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред item.GetValueOrDefault
рдФрд░ item.OrDefault
ред
рдЙрдкрд╕рдВрд╣рд╛рд░
рдЬреЛ рдмреЗрд╣рддрд░ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ? рдлрд░реНрдиреАрдЪрд░ рдФрд░ рдХрдорд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдмрд░реНрдл-рд╕рдлреЗрдж рдорд╣рд▓ рдпрд╛ рд▓реБрдИ XIV рдХреА рд╢реИрд▓реА рдореЗрдВ рд╕реЛрдлреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реЗрдб? рдЗрдВрдЬрди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд▓рдХреНрдЬрд░реА рдиреМрдХрд╛ рдпрд╛ рдПрдХ рдХреНрд╡рд╛рдВрдЯрдо рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд░рд╛рд╣рдирд╛ рдмрдЬрд░рд╛ рдЬреЛ рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдзреНрд░реБрд╡реАрдп рдЙрддреНрддрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди "рдХрд╣реАрдВ рдмреАрдЪ рдореЗрдВ" рднреАред
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рджреЛрдиреЛрдВ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдЕрдЯреВрдЯ рд╣реИрдВ: рдзреНрдпрд╛рди рд╕реЗ рдПрдХ рдХрд┐рддрд╛рдм рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╡рд░ рдЪреБрдирдирд╛, рд╣рдо рд╕рдВрджреЗрд╣ рд╕реЗ рдкрд╛рда рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдмреАрдЯрд▓реНрд╕ рдХрдо-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рд╕рдВрдЧреАрдд рдмрдЬрд╛рдПрдВ , рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рднреА MusicHelper рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред
рдПрдХ рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдПрдХ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╢рдмреНрдж рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдд рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░рдо рдирд┐рд░реНрдгрдп рдХреА рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЪрдХреНрд░ рд░реВрдк рдФрд░ рдЪрд┐рддреНрд░ рдХрд╛ рдЪрд░рдо рд╣реИред
рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдВрджрд░реНрдн
рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдореЗрд░реЗ GitHub рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Pocket.Common
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВред (рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ)