Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Boxing ΠΈ unboxing β€” Ρ‡Ρ‚ΠΎ быстрСС?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Код ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° доступСн Π½Π° github, поэтому ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ всСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ своих Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π² коммСнтариях.

ВСория

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ boxing характСризуСтся Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ памяти Π² управляСмой ΠΊΡƒΡ‡Π΅ (managed heap) ΠΏΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ value type ΠΈ дальнСйшСС присваиваниС указатСля Π½Π° этот участок памяти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² стСкС.

Распаковка unboxing, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² стСкС выполнСния ΠΏΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· управляСмой ΠΊΡƒΡ‡ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля.

Казалось Π±Ρ‹, Π² ΠΎΠ±ΠΎΠΈΡ… случаях выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ особой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ, Ссли Π±Ρ‹ Π½Π΅ ΠΎΠ΄Π½ΠΎ Π½ΠΎ- ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ Π΄Π΅Ρ‚Π°Π»ΡŒΡŽ являСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти.

Как Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» blanabrother Π² коммСнтариях, ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ памяти/ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ значСния Π² managed heap отсутствуСт процСсс поиска свободного участка памяти ΠΈ Π΅Ρ‘ возмоТная фрагмСнтация Π²Π²ΠΈΠ΄Ρƒ ΠΈΠ½ΠΊΡ€ΠΈΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ указатСля ΠΈ дальнСйшСй Π΅Ρ‘ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с использованиСм GC. Однако, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСрСния скорости выдСлСния памяти Π² C++ посмСю ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ (Ρ‚ΠΈΠΏ) памяти являСтся основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’ случаС ΠΆΠ΅ с распаковкой, ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСляСтся Π² стСкС выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° свой ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Ρƒ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π½Π°Ρ‡Π°Π»ΠΎΠΌ участка памяти ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π’Ρ‹Π²ΠΎΠ΄ ΠΈΠ· этого я дСлаю Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ процСсс ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ распаковки, Π²Π²ΠΈΠ΄Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… side effects связанных с GC ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ выдСлСния памяти/копирования значСния Π² managed heap.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ этого утвСрТдСния я набросал 4 нСбольшиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: 2 для boxing ΠΈ 2 для unboxing Ρ‚ΠΈΠΏΠΎΠ² int ΠΈ struct.

Для Π·Π°ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Ρ‹Π»Π° использована Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° BenchmarkDotNet Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Release (Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ Ссли DreamWalker подскаТСт, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ€Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ). Π”Π°Π»Π΅Π΅ прСдставлСн Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π‘Ρ€Π°Π·Ρƒ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Ρƒ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π²Ρ‘Ρ€Π΄ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½ Π² отсутствии ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ компилятором ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ, судя ΠΏΠΎ IL ΠΊΠΎΠ΄Ρƒ, каТдая ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ содСрТит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² СдинствСнном числС.

Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠΎΠ»-Π²ΠΎΠΌ LoopCount, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ распаковки ΠΈΠ· Ρ€Π°Π·Π° Π² Ρ€Π°Π· прСвосходила ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ Π² 3-8 Ρ€Π°Π·.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ распаковка-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ (Руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° C#)

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° прСдставляСт собой процСсс прСобразования Ρ‚ΠΈΠΏΠ° значСния Π² Ρ‚ΠΈΠΏ object ΠΈΠ»ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ интСрфСйса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ этим Ρ‚ΠΈΠΏΠΎΠΌ значСния. Когда Ρ‚ΠΈΠΏ значСния упаковываСтся общСязыковой срСдой выполнСния (CLR), ΠΎΠ½ инкапсулируСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ экзСмпляра System.Object ΠΈ сохраняСт Π΅Π³ΠΎ Π² управляСмой ΠΊΡƒΡ‡Π΅. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ распаковки ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Ρ‚ΠΈΠΏ значСния ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° являСтся нСявной; распаковка являСтся явной. ΠŸΠΎΠ½ΡΡ‚ΠΈΡ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ распаковки Π»Π΅ΠΆΠ°Ρ‚ Π² основС Π΅Π΄ΠΈΠ½ΠΎΠΉ систСмы Ρ‚ΠΈΠΏΠΎΠ² C#, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ распаковки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° o ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ цСлочислСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i :

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ использованиС ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π² C#.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с простыми опСрациями присваивания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ распаковки ΡΠ²Π»ΡΡŽΡ‚ΡΡ вСсьма Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ процСссами с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния вычислСний. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Ρ‚ΠΈΠΏΠ° значСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ОбъСм вычислСний ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ распаковки, хотя ΠΈ Π² мСньшСй стСпСни, Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ вСсьма Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Ρ‚ΠΈΠΏΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΡƒΡ‡Π΅ со сбором мусора. Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° прСдставляСт собой нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° значСния Π² Ρ‚ΠΈΠΏ object ΠΈΠ»ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ интСрфСйса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ этим Ρ‚ΠΈΠΏΠΎΠΌ значСния. ΠŸΡ€ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ Ρ‚ΠΈΠΏΠ° значСния Π² ΠΊΡƒΡ‡Π΅ выдСляСтся экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ выполняСтся ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ значСния Π² этот Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° значСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ явная ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Распаковка

Распаковка являСтся явным ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ· Ρ‚ΠΈΠΏΠ° object Π² Ρ‚ΠΈΠΏ значСния ΠΈΠ»ΠΈ ΠΈΠ· Ρ‚ΠΈΠΏΠ° интСрфСйса Π² Ρ‚ΠΈΠΏ значСния, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ этот интСрфСйс. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ распаковки состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… дСйствий:

ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ являСтся ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° значСния;

ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ значСния ΠΈΠ· экзСмпляра Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° значСния.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ ΠΈ распаковкС.

На рисункС Π½ΠΈΠΆΠ΅ прСдставлСн Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этого ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ распаковки Ρ‚ΠΈΠΏΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΎ врСмя выполнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ экзСмпляр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распаковываСтся, Π±Ρ‹Π» ссылкой Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ созданный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ экзСмпляра этого Ρ‚ΠΈΠΏΠ° значСния. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ null создаСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ NullReferenceException. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° нСсовмСстимый Ρ‚ΠΈΠΏ значСния создаСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ InvalidCastException.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выводится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Specified cast is not valid. Error: Incorrect unboxing.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ:

БпСцификация языка C#

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² спСцификации языка C#. БпСцификация языка являСтся ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ источником ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ синтаксисС ΠΈ использовании языка C#.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка(boxing/unboxing)?

Π§Ρ‚ΠΎ это Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка (boxing/unboxing) ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°?

Π‘Ρ‹Π» Π±Ρ‹ Ρ€Π°Π΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

3 ΠΎΡ‚Π²Π΅Ρ‚Π° 3

ΠΈΡ… нСльзя ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это нСудобство, для всСх ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми свойствами Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

Π’ Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎ контСксту Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (присваиваниС, Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²), Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ значСния ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ выраТСния Ρ‚ΠΈΠΏΠ° 2 * 3), всСгда происходит Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π’ вСрсиях Π½ΠΈΠΆΠ΅ JDK 1.5 Π±Ρ‹Π»ΠΎ Π½Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ int, char, float, double Π² ΠΈΡ… классы ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Integer, Character, Float, Double. Начиная с вСрсии JDK 5 эта функция, прСобразования ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² эквивалСнтныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° автоматичСски. Π­Ρ‚ΠΎ свойство извСстно ΠΊΠ°ΠΊ Автоупаковка(Autoboxing). ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ процСсс соотвСтствСнно – Распаковка(Unboxing) Ρ‚.Π΅. процСсс прСобразования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ распаковки прСдставлСн Π½ΠΈΠΆΠ΅:

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π²Ρ‚ΠΎΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка?

Автоупаковка примСняСтся компилятором Java Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… условиях:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Всё Π΅Ρ‰Ρ‘ ΠΈΡ‰Π΅Ρ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚? ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ вопросы с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ java java-faq ΠΈΠ»ΠΈ Π·Π°Π΄Π°ΠΉΡ‚Π΅ свой вопрос.

БвязанныС

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Π»Π΅Π½Ρ‚Ρƒ

Для подписки Π½Π° Π»Π΅Π½Ρ‚Ρƒ скопируйтС ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ эту ссылку Π² Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для чтСния RSS.

Π΄ΠΈΠ·Π°ΠΉΠ½ сайта / Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Β© 2021 Stack Exchange Inc; ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° условиях Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ cc by-sa. rev 2021.12.9.40958

НаТимая Β«ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ cookieΒ» Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Stack Exchange ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ cookie Π½Π° вашСм устройствС ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² соотвСтствии с нашСй ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² cookie.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка?

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, здСсь ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

А Π²ΠΎΡ‚ состояниС памяти Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ произвСдСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «123» Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π² ΠΊΡƒΡ‡Π΅ создаСтся «ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°», ΠΊΡƒΠ΄Π° впослСдствии ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅.

Когда ΠΆΠ΅ производится распаковка:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ происходит с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «123» Π±Ρ‹Π»ΠΎ ΠΈΠ·ΡŠΡΡ‚ΠΎ ΠΈΠ· ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π½Π°Π·Π°Π΄ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ стСка.

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, сии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ достаточно рСсурсоСмкими.

Π’Π΅ΠΌΠ° связана со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим IL

Когда ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, часто Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ нСпосрСдствСнно Π² Intermediate Language (IL).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π’Π΅ΠΏΠ΅Ρ€ΡŒ скомпилируСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΊΠΈ ILSpy посмотрим Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ EXE.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ EXE-Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π² ILSpy, пронавигируСмся ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Main, Π²Ρ‹Π±Ρ€Π°Π² «IL with C#».

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π­Ρ‚ΠΎ Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ распаковки прСдставлСны Π² IL.

Когда стоит ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ ΠΈ распаковку?

Код Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ скорСС всСго Π²Π°ΠΌ покаТСтся Π½Π°ΠΈΠ²Π½Ρ‹ΠΌ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ: «Π­ΠΉ, Ρ‡Ρ‚ΠΎ Π·Π° Π²Π·Π΄ΠΎΡ€! Π― Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ». Π§Ρ‚ΠΎ ΠΆΠ΅, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ. Но Π΄Π°Π½Π½Ρ‹Π΅ Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ часто ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΎΠ± этом Π΄Π°ΠΆΠ΅ Π½Π΅ догадываСмся.

Π“Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, старая школа Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ ArrayList.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

ΠœΠ΅Ρ‚ΠΎΠ΄ добавлСния элСмСнта здСсь, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ object-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈ здСсь производится наша излюблСнная ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΊΠ°Π½ΡƒΠ»ΠΎ Π² Π»Π΅Ρ‚Ρƒ с ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΎΠΌ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

ΠšΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡ строк

Π”Ρ€ΡƒΠ³ΠΎΠΉ интСрСсный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π­Ρ‚Π° опСрация Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия ΠΌΠ΅Ρ‚ΠΎΠ΄Π° String.Concat, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° object-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π’ΠΈΠ΄Π΅ΠΎ курсы ΠΏΠΎ схоТСй Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

C# Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ (ООП) 2021

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

How to C# Π£Π³Π»ΡƒΠ±Π»Π΅Π½Π½Ρ‹ΠΉ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π”Π°Π±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуаций, Π½Π°ΠΌ достаточно просто Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° int ΠΌΠ΅Ρ‚ΠΎΠ΄ ToString (ΠΈ здСсь стоит ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС ReSharper ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ опСрация бСссмыслСнна:) ).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

И всС! Никакой ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ большС Π½Π΅Ρ‚.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ случаС с ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ строк, Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΎΡ‚ примСнСния ToString вСсьма Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½. ИмСнно ΠΏΠΎΡ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ я упомянул Π²Ρ‹ΡˆΠ΅, Π΄Π°ΠΆΠ΅ ReSharper Π½Π΅ совСтовал Π½Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π’ этом случаС Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π±Π΅Π· ToString.

Π¦Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ появляСтся, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ распаковки прСдстоит ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅ сотни ΠΈ тысячи Ρ€Π°Π·. Π’ этом случаС врСмя выполнСния ΠΊΠΎΠ΄Π° с ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ порядка 150 ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния ΠΊΠΎΠ΄Π° Π±Π΅Π· Π½Π΅Π΅ (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сами ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСстовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ).

Π£ΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ большС памяти, Ρ‡Π΅ΠΌ значСния Π² стСкС. ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²/ΠΈΠ· стСка Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ своих Π·Π°Ρ‚Ρ€Π°Ρ‚. Богласно MSDN, ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ порядка 20 Ρ€Π°Π· большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ΠΆΠ΅Π»ΠΈ простоС присвоСниС. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ распаковка ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 4 Ρ€Π°Π·Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ простого присвоСния.

Π˜Ρ‚Π°ΠΊ. Π·Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ ΠΈ распаковку?

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ распространСны, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… использованиС, Π½ΠΎ ΠΊ этому Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ. НС Ρ‚Ρ€Π°Ρ‚ΡŒΡ‚Π΅ своС врСмя Π½Π° ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π°, Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· IL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Π΄Π°Π±Ρ‹ Π½ΠΈ ΠΎΠ΄Π½Π° лишняя опСрация ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅ Π±Ρ‹Π»Π° использована. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ чистота ΠΈ простота чтСния ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Π°, Π½Π΅ΠΆΠ΅Π»ΠΈ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ΅, ΠΌΠ΅Π»ΡŒΡ‡Π°ΠΉΡˆΠ΅Π΅ ускорСниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

БСсплатныС Π²Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹ ΠΏΠΎ схоТСй Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ вычислСния матСматичСских Ρ„ΠΎΡ€ΠΌΡƒΠ» для программиста

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ

Π’ сСгодняшнСм ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрСли, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка, ΠΊΠ°ΠΊ ΠΎΠ½Π° прСдставлСна Π² IL-ΠΊΠΎΠ΄Π΅, ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ влияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚. Π˜ΡΠΊΡ€Π΅Π½Π½Π΅ надСюсь, моя ΡΡ‚Π°Ρ‚ΡŒΡ сумСла ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, хотя Π±Ρ‹ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ. πŸ™‚

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

BestProg

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ распаковка. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ (прСимущСства) примСнСния ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ бСзопасности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

1. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ (boxing) ΠΈ распаковки (unboxing)

ДопускаСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° object Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания:

Но Π² этом случаС Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· строки

ΠΈΠ½Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ошибка Π½Π° этапС компиляции.

Если пСрСмСнная Ρ‚ΠΈΠΏΠ° object ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π»Π΅Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания, Ρ‚ΠΎ компилятор выполняСт Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ. Если пСрСмСнная ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° object ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания, Ρ‚ΠΎ компилятор выполняСт распаковку.

ИспользованиС ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ вмСсто использования Ρ‚ΠΈΠΏΠ° object Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… эти прСимущСства Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

2.1. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ 1. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ явного привСдСния Ρ‚ΠΈΠΏΠ°

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 1.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Рисунок 1. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² явном ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊ Ρ‚ΠΈΠΏΡƒ int ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ object

2.2. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ 2. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ бСзопасности Π² обобщСниях

ΠŸΡ€ΠΈ использовании класса object Π² качСствС Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, которая Π½Π° этапС компиляции Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π°. Π­Ρ‚Π° ошибка окаТСтся Π½Π° этапС выполнСния, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ.

Π’ случаС с классом ObjectClass ошибки Π½Π° этапС компиляции Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Π­Ρ‚Π° ошибка Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π½Π° этапС выполнСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Рисунок 2. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ выявлСния ошибки компилятором для ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… класса

2.3. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ 3. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ИспользованиС ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… классов Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (быстродСйствиС) ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π½Π΅ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΈ присвоСнии значСния Ρ‚ΠΈΠΏΠ° object Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, компилятор выполняСт ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ ΠΈ распаковку (смотритС ΠΏ. 1). Π­Ρ‚ΠΎΡ‚ процСсс Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Ρ‡Π΅ΠΌ использованиС ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ. Π’ случаС с обобщСниями формируСтся Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ с привязкой ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся быстрСС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ боксинг ΠΈ анбоксинг

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *