Π΄Π»Ρ ΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ·ΡΠΊ managed c
ΠΠ»Ρ ΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ·ΡΠΊ managed c
public ref class CBookManagedCode // Managed C++ ΠΊΠ»Π°ΡΡ
<
public:
CBookManagedCode();
public:
int CalculatePrice(interior_ptr nBookID)
<
. // C++ ΠΊΠΎΠ΄
>
>;
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C# ΠΊΠ»Π°ΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ C++ ΠΏΡΠΎΠ΅ΠΊΡΠ΅
ΠΡΡΡ ΡΡΠ°ΡΡΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΠΎΠ±ΡΡΠ½ΠΎΠΌ C++.
ΠΡΠΆΠ½ΠΎ Π² ΡΡΠΎΠΌ C++ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C# ΠΊΠ»Π°ΡΡΡ (Π² C# ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π±ΡΡΡΡΠ΅Π΅, Π² C# ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
, Π² C# Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈ Ρ.Π΄.)
Π’Π°ΠΊ Π²ΠΎΡ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ C++ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΊΠ»Π°ΡΡΡ C# Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄ (Managed Π‘++).
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° C++
1) Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΠΎΠ΅ C++ console application.
2) Π ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ
ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Common Language Runtime Support = Common Language Runtime Support (/clr)
#include «stdafx.h» // ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π‘++ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
#include // ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π‘++ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
using namespace System; // ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π‘# Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ C# ΠΊΠ»Π°ΡΡΠ° String
using namespace System::IO; // ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π‘# Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ C# ΠΊΠ»Π°ΡΡΠ° FileInfo
int _tmain( int argc, _TCHAR* argv[])
<
TCHAR strTitle[] = _T( «d://1.txt» ); // C++ ΠΊΠΎΠ΄
String^ strFilename = gcnew String(strTitle); // managed c++ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ String (ΠΊΠ»Π°ΡΡ C#)
// ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΠΉΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ C# ΠΊΠ»Π°ΡΡ FileInfo
FileInfo^ finfo = gcnew FileInfo(strFilename); // managed c++ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ FileInfo (ΠΊΠ»Π°ΡΡ C#)
// Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡΠ°Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ std::cout (ΡΡΠ½ΠΊΡΠΈΡ C++)
std::cout «File size: » Length «\n» ;
return 0;
>
// Managed C++
String^ strFilename = gcnew String();
// C#
String strFilename = new String();
Π Managed C++ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ^
Π C# ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ (ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠΊΠ°)
Π Managed C++ Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ gcnew
Π C# Π΄Π»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ new
ΠΠ±Π·ΠΎΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Visual Studio 2013
Π¦Π΅Π»Ρ Π»Π΅ΠΊΡΠΈΠΈ
ΠΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ C#, VB, Managed C++, JavaScript, F# ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΡΡΠ΅Π΄ΠΎΠΉ Visual Studio, ΠΈ ΠΈΡ Π½ΠΎΠ²ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π² ΡΡΠ΅Π΄Π΅ Visual Studio 2013.
7.1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠ°Π±ΠΎΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π² Visual Studio 2013
7.2. Π―Π·ΡΠΊ C# ΠΈ Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² VS 2013.
ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΡ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ C++, Java ΠΈ C# (Π½Π°Π·Π²Π°Π½Π½ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ), ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΡΠΎ ΠΌΠΎΠ΅ Π»ΠΈΡΠ½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ( generics ):
ΠΡΠ²ΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: Π΅ΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΠΈΠΏ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° g ΡΠΈΠΏΠ° Generic Π½Π°ΠΏΡΡΠΌΡΡ:
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π» Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² Π²Π΅ΡΡΠΈΠΈ Visual Studio 2010 Ultimate. Π Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C# Π²ΡΠ΄Π°Π» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ : ΠΌΠ΅ΡΠΎΠ΄ GetType Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅. ΠΠ°Π»ΠΈΡΠΎ ΡΠ²Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² Visual Studio 2013, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ: ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΠΈΠΏ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
Π₯ΠΎΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Microsoft Π½Π΅ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡΡ Π² ΡΠ·ΡΠΊ C# ΠΈ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Π²Π΅ΡΡΠΈΠΈ Visual Studio 2013, ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ»ΡΠΆΠΈΡ Π²Π΅ΡΠΎΠΌΡΠΌ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° C# Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°Π΄ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
BestProg
Managed (ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅) ΠΈ unmanaged (Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅) ΠΊΠ»Π°ΡΡΡ Π² Visual C++. ΠΠ±Π·ΠΎΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ managed ΠΈ unmanaged ΠΊΠ»Π°ΡΡΠΎΠ²
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΠΎΠΈΡΠΊ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΡΡΠ°Ρ :
1. ΠΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Visual C++? ΠΠ°ΠΊΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ Π²ΠΈΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠΎΠ²?
Π ΡΠΈΡΡΠ΅ΠΌΠ΅ Visual C++ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΊΠ»Π°ΡΡΠΎΠ²:
Π Π°Π±ΠΎΡΠ° Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π½Π° ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΠΌΠ°Ρ :
2. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· n ΡΠΈΡΠ΅Π»
ΠΠΈΠΆΠ΅ Π½Π°Π²ΠΎΠ΄ΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ²:
ΠΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ.
2.1. Unmanaged (Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ) ΠΊΠ»Π°ΡΡ
2.1.1. Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ°
Π ΠΊΠ»Π°ΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
Π ΠΊΠ»Π°ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ:
Π ΠΊΠ»Π°ΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅
2.1.2. Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ( * ) Π½Π° ΠΊΠ»Π°ΡΡ
2.2. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ managed (ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ) ΠΊΠ»Π°ΡΡΠ°
ΠΠ»Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 2 ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°:
ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ (ΡΠ°ΠΉΠ»Π°Ρ ):
Π’Π΅ΠΊΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ MyArray.h ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
Π’Π΅ΠΊΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ MyArray.cpp ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
2.2.1. Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ°
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ CMyArray Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ (ΡΠ°ΠΉΠ»Π°Ρ ) Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ MyArray.h
ΠΠ±ΡΡΡΠ½ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π°. ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ°
Π³Π΄Π΅ ΡΠΈΡΠ»ΠΎ 10 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
2.2.2. Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ( ^ ) Π½Π° ΠΊΠ»Π°ΡΡ
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ Π² ΡΡΡΠΎΠΊΠ΅
Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ CMyArray() Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ). Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ C++
ΠΠ²ΡΠΎΡ: ΠΠ³ΠΎΡΡ Π’ΠΊΠ°ΡΡΠ²
ΠΡΡΠΎΡΠ½ΠΈΠΊ: RSDN Magazine #0
ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ: 05.02.2002
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ: 13.03.2005
ΠΠ΅ΡΡΠΈΡ ΡΠ΅ΠΊΡΡΠ°: 1
ΠΡΠ°ΠΊ, βΠ£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ C++β. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΠ΄ ΡΡΠΈΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΈ Π² ΡΡΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ.
Π‘ΡΠ΅Π΄ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π·Π°Π΄Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, C++ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π½ΡΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, Π½Π΅ΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ·-Π·Π° ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΈΠΏΠΎΠ², ΡΠΎ Π²ΠΎΡ ΡΡΠΎ ΠΎΠ± ΡΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ C++ ΠΡΠ΅ΡΠ½ Π‘ΡΡΠ°ΡΡΡΡΡΠΏ:
βΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° Π² C++ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΡΡΠΈ, Π° Π½Π΅ ΠΎΡ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ°Π½Π°. ΠΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ ΠΎΡΠΊΡΡΡΡΠΌ Π΄Π»Ρ ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ βΠΆΡΠ»ΡΠ½ΠΈΡΠ΅ΡΡΠ²Π°β, Π½Π°ΡΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ²Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠΏΠΎΠ², ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°β
ΠΡΡΠΌΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ API, Π° ΡΠ°ΠΊΠΆΠ΅ βΠΌΠΈΡΠ½ΠΎΠ΅ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅β Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½ ΡΡΠΏΠ΅Ρ Π° C++.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°Π»ΠΈΡΠΎ ΡΠ²Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Ρ ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ C++. ΠΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ ΠΈΠ· Π Π΅Π΄ΠΌΠΎΠ½Π΄Π° ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΈ ΠΏΠΎΠ΄ΡΡΠΆΠΈΡΡ CLR Ρ βΠ½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌβ C++?
Π ΡΡΠ°ΡΡΡΡ, C++ ΠΎΡΡΠ°Π»ΡΡ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ. ΠΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π²ΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π·Π°Π±ΡΠ²Π°ΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ CLR Π½Π΅ ΠΌΠΎΠ³ΡΡ Π½Π°ΠΌ Π² ΡΡΠΎΠΌ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, C++ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ CLR ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Ρ.Π΅. ΠΈΠ³ΡΠ°ΡΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΡΠΎΠΉ ΡΡΠ΅Π΄Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
Managed Extensions for C++ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ C++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ CLR:
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ, ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΎΡΠΌΠ΅ΡΠ΅Π½ΠΎ Π²ΡΡΠ΅, CLR ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Π° CLR Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π»Π°Π΄Π΅ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ . Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ Π½Π°ΡΡΠ΄Ρ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ C++, Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΡΡ ΠΈΡΡΠ΅Π½ΠΈΡΠΌ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ COM-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ __gc ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π² ΠΊΡΡΠ΅ ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ CLR. Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ gc, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡ garbage collection. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΊΡΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
__gc arrays
Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΊΡΡΠ΅ CLR. ΠΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ. ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Foo ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Foo ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° __gc. Π ΡΡΠΎΠΌ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΆΠ΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ.
ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² MC++ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
ΠΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ²Π½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌΠΈ Π΄Π»Ρ Π½Π°Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ C++. Π‘ΠΊΠΎΡΠ΅Π΅, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΠΈ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ Π² C++ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΡΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
__pin
Pin-ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π½Π΅ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠΌ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠ°ΠΊΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
__nogc
ΠΠ°ΠΊ Π½Π΅ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ C++. ΠΡΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½ Π·Π΄Π΅ΡΡ Π»ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ.
__value
Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΊΡΡΠ΅ ΡΠ°ΡΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±Π°ΠΉΡ ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΡΡΠΈΠΊΠ°. ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΡΠ΅ΠΊΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ __value ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ gc-ΡΠΈΠΏΠΎΠ², ΠΌΠΎΠ³ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΊΡΡΠ΅, ΡΠ°ΠΊ ΠΈ Π² ΡΡΠ΅ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΡΠ°Π±Π»ΠΈΡΠ΅ 1 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ C++ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ CLR.
C++ | CLR |
---|---|
char | Sbyte |
signed char | Sbyte |
short | Int16 |
int | Int32 |
long | Int32 |
__int64 | Int64 |
unsigned char | Byte |
unsigned short | UInt16 |
unsigned int | UInt32 |
unsigned long | UInt32 |
unsigned __int64 | UInt64 |
float | Single |
double | Double |
void | Void |
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° __value ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΡΠ°ΠΊ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌΡΠ΅ ΡΠΈΠΏΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ CLR. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΡΠΊΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ. CLR ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈ Π² MC++ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π΄Π»Ρ Π½ΠΈΡ ΡΠΈΠΏ.
__box
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ __box ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΡΡΠΊΡ Π΄Π»Ρ value-ΡΠΈΠΏΠΎΠ², ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ gc-ΠΊΠ»Π°ΡΡΡ. Π’Π°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ, ΠΊΠ°ΠΊ C# ΠΈ VB.NET, ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΡΡΠΊΠΈ Π΄Π»Ρ value-ΡΠΈΠΏΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π² MC++ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
__gc pointers
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ
ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, CLR Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π΅ Π²ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ, Π°, Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ·ΠΎΠ²Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, βΠΎΠ±Π»Π΅Π³ΡΡΠ½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρβ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ COM-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ATL Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² CLR ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², Π½ΠΎ ΡΡΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΠΌΠ΅ΡΡ ΡΡΠ΄ Π²Π°ΠΆΠ½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ.
Π¦Π΅Π»Ρ ΡΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ β ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈ ΡΠ²Π΅ΡΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊ ΠΏΡΠΎΡΡΠΎΠΌΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½Π° Π² Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ .
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΠΌΡ MC++ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π΄Π²ΡΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠΌ gc-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, MC++ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (default implementations):
Π‘ΡΡΠΎΠΊΠΈ
ΠΠΎΡΡΡΠΏ ΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΊΠ°ΠΊ ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΌ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ΅Π»Π΅Π³Π°ΡΡ ΠΈ ΡΠΎΠ±ΡΡΠΈΡ
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π»Π΅Π³Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Ρ.Π΅. Π΄Π΅Π»Π΅Π³Π°Ρ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ β Π΄Π»Ρ TestDelegate2 ΠΌΡ ΠΎΠΏΡΡΡΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΄Π°ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Windows API, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ:
ΠΡΠΏΠΎΠΌΠΈΠ½Π°Ρ COM ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π²ΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠ°ΡΡΡΠ»ΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠΎ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΡΠΎΡΡ Π΄Π΅Π»Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ½ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ Π½Π°ΠΌ Π΄Π΅Π»Π΅Π³Π°Ρ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΎΠΉ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠ±ΡΡΠΈΠΉ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΠΎΠ½ΡΠΈΡΡ Ρ Π΄Π΅Π»Π΅Π³Π°ΡΠ°ΠΌΠΈ, ΠΏΡΠΈΠ²Π΅Π΄ΡΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ°ΡΡΠ²ΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ:
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ β+=β, Π΄Π»Ρ Π΅Ρ ΠΎΡΠΌΠ΅Π½Ρ β-=β.
Π‘Π²ΠΎΠΉΡΡΠ²Π°
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² CLR Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ²ΠΎΠΉΡΡΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅
ΠΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ Managed Extensions for C++ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ .
ΠΠΌΠΏΠΎΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° MC++ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΡΡΠΌ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #using ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΡΡΡΠ΅ΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ
ΠΡΡΠΈΠ±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ . ΠΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π° Π² ΠΌΠ΅ΡΠ°Π±Π°Π·Π΅. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ [DllImport]. ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅, ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ user32.dll. ΠΡΡΠΈΠ±ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΠΎΠΉ CLR ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ, Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ (Custom Attributes).
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ attribute ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° System::Attribute ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ². ΠΠ°Π±Π°Π²Π½ΠΎ, Π½Π΅ ΠΏΡΠ°Π²Π΄Π° Π»ΠΈ? ΠΠΎΡ Π²Π°ΠΌ Π΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² β ΡΡΠΎΠ±Ρ ΠΊΠ»Π°ΡΡ ΡΡΠ°Π» Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ, Π½ΡΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ attribute. Π ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΌΠ΅ΡΠ°Π±Π°Π·Π΅. ΠΠΎΠ³Π΄Π° ΠΆΠ΅ Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΠΊ Π²Π°ΡΠΈΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΠΌ ΡΠΈΠΏΠΎΠ², Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ . ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ AttributeTargets ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, Π³Π΄Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° «ΠΠΠ» ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ.
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
CLR ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΈ Π² MC++ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ. ΠΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·-Π·Π° ΠΏΡΠΈΠ½ΡΡΠΎΠΉ Π² MC++ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ, ΠΊΠ°ΠΊ C# ΠΈ VB.NET, Π»ΠΈΡΠ΅Π½Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ° ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΡΡΠΎΠΈΡ. ΠΠ΅Π»ΡΠ·Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ operator Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ , Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌΠΈ Π² CLR ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΈΡ CLR ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.
op_Decrement | — |
op_Increment | ++ |
op_Negation | ! |
op_UnaryNegation | — |
op_UnaryPlus | + |
op_Addition | + |
op_Assign | = |
op_BitwiseAnd | & |
op_BitwiseOr | | |
op_Division | / |
op_Equality | == |
op_ExclusiveOr | ^ |
op_GreaterThan | > |
op_GreaterThanOrEqual | >= |
op_Inequality | != |
op_LeftShift | > |
op_Subtraction | — |
ΠΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ
ΠΠΏΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° /clr
#pragma unmanaged, #pragma managed
ΠΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅. ΠΡΠ°Π³ΠΌΠ° unmanaged Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ, βΡΠΎΠ΄Π½ΠΎΠΉβ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΊΠΎΠ΄. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π² ΡΠ°ΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
_MANAGED
ΠΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΎΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π² 1, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΡΠΈΡ /clr. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠ°Π³ΠΌΠ° unmanaged Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Ρ.Π΅. ΠΎΠ±Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ 1:
ΠΠΏΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° /FAs
Π Π°Π·Π½ΠΎΠ΅
ΠΡ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ ΠΎΠ± MC++, Π½ΠΎ Π΅ΡΡΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ.
__identifier
ΠΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΈΠΌΠ΅Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ βoperatorβ:
__abstract
__abstract Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Ρ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ.
__sealed
ΠΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
__typeof
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ __typeof Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ System::Type, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΌ ΡΠΈΠΏΠ΅.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
Π£ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΡΡΠ΅Π΄ΠΎΠΉ CLR ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ·ΠΎΠ²Π° ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ Π²ΡΠ·ΠΎΠ² Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½ Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΡΠΈΠ±ΡΡ [ParamArray]
Π CLR Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ C++ ΡΠΏΠΎΡΠΎΠ±Π°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ System::ParamArray. ΠΠ° MC++ ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π C# ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° ParamArray Π²ΡΡΡΠΎΠ΅Π½ΠΎ Π² ΡΠ°ΠΌ ΡΠ·ΡΠΊ, ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ params :
ΠΡΠ·ΠΎΠ² Π½Π°ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° C# Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π’.Π΅. ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C# ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ. C++ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠΌΠΈ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ, ΠΈ Π½Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΡΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², ΡΠ²Π½ΠΎ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ:
Π‘ΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ CLR-ΡΠ·ΡΠΊΠΎΠ² MC++ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΠΈ Π΄Π°Π»Π΅Π΅ ΠΌΡ ΠΏΡΠΎΠ²Π΅Π΄ΡΠΌ ΡΠ΅ΡΠΈΡ ΡΠΌΠ΅Π»ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΡΠΌΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡ:
ΠΠ°Ρ Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Π²ΡΠ·ΠΎΠ² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΡΠ΅ΠΏΠ°ΡΠΈΡΡΠ΅ΠΌ ΡΡΠΎΡ ΡΠ΅ΠΊΡΡ ΠΎΠΏΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° /FAs ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ:
ΠΠ΅ΡΠ²ΠΎΠ΅, Π½Π° ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ Ρ Π½Π°Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΆΠΈΠ²Π°ΡΡΡΡ MSIL ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, ΠΈΠ· ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ MC++ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°. Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π³Π»ΡΡΠΊΠΈ, ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ β ΡΡΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°ΠΊΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ². ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π°ΠΏΡΡΠΌΡΡ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Ρ ΡΠΎΠΉ Π»ΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ ΠΏΠΎ-ΡΠ²ΠΎΠ΅ΠΌΡ. ΠΡΠΎ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ CLR ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Ρ.
Π‘ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ Π²ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ² ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠ° [DllImport], Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½Π½ΡΠ΅ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ:
ΠΠ°ΠΊΡΠΎΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΈΠ·-Π·Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΠΈΠΌΡΠ½, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° windows.h.
ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΡΡΠΎΡΠΊΡ «123». ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½Π°Ρ Win32 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ½Π° ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΎΠ² CoInitialize Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ COM-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡ ΡΡΠΎΠΌΠ½ΠΈΡΡΡΡ Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΠΌ ΠΎΠ±ΡΠ°ΠΌΠΈΡΡ Π²Π΅ΡΡ ΡΡΠΎΡ ΡΠ΅ΠΊΡΡ ΠΏΡΠ°Π³ΠΌΠ°ΠΌΠΈ unmanaged/managed ΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ±ΡΠ°ΠΌΠ»ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΠΈΡ ΠΈ ΡΠ°ΠΌΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #import, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠ΅ΡΡΠ° Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ΠΊΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ, Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ), Ρ ΠΎΡΡ ΡΠ°ΠΌΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΡ ΠΎΠ΄ΠΈΠ½ Π²ΠΎΠΏΡΠΎΡ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ βΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉβ ΠΈ βΠ½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉβ ΠΊΠΎΠ΄? Π‘ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ Π²ΡΡ ΡΡΠ½ΠΎ β ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ βΡΠΎΠ΄Π½ΠΎΠΉβ ΠΊΠΎΠ΄ Windows/Intel. Π‘ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ β CLR ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ, ΠΊΠ°ΠΊ Π±ΡΡΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ C++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π² MSIL ΠΊΠΎΠ΄.
ΠΡΡΡΡ ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ Π±ΡΠ΄ΡΡβ¦ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ, Ρ ΠΎΡΡ ΠΌΡ-ΡΠΎ Ρ Π²Π°ΠΌΠΈ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ :o)
ΠΡΠ°ΡΠΊΠΎ ΠΈ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ C++ CLI
Π’Π°ΠΊ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ C++/CLI ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ, ΡΡΠΎ ΡΡΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ, Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π°Π΄ΠΎ. Π’Π°ΠΊ ΡΡΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΡ Ρ ΠΎΠ±Π·ΠΎΡΠΎΠΌ ΡΠ·ΡΠΊΠ°, ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π°ΡΠ½ΠΎ Π»Π΅ΡΡ Π³ΡΠ°Π±Π»ΠΈ.
Π§ΡΠΎ ΡΡΠΎ?
Π ΡΠΎΠΌΡ ΠΆΠ΅, Π² ΡΡΠΎΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΈΠΏ ΠΈ Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ (Π² ΠΎΠ±ΠΎΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Β«*Β»), Π½Π΅ Π±ΡΠ»ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΡΠΎΡΠ΅Π΅. ΠΡΠΎ ΠΈ ΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΎ Microsoft Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ ΡΠ·ΡΠΊΠ°, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠ΅ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΈ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π°Π·ΡΠ²Π°ΡΡΡΡ, ΠΊΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, Β«old syntaxΒ» ΠΈ Β«new syntaxΒ», ΠΈ ΠΊΠ°ΠΊΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΏΡΠΎΡΠ΅ΠΌ, ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ
ΡΠ±ΠΎΡΠΎΠΊ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΠΉ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠ»ΠΎΡ
.
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ?
2) ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΠΏΠ»ΡΡΠ°Ρ ΠΊΠΎΠ΄. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π°Ρ ΠΎΡΡΠ°Π»ΠΈΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ C++, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±Π΅ΡΡΠΊΠΈ Π΄Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π° Π½Π°ΡΠΈΠ²Π½ΡΡ ΠΏΠ»ΡΡΠ°Ρ . ΠΡΠΎ Π΄Π°Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ Π²ΡΠ·ΠΎΠ²Ρ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΆΠ΅Π»ΠΈ PInvoke, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΡΠΌΠ΅Π΅Ρ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
ΠΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° Π‘++/Π‘LI ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΊΠ°ΠΊ MSIL ΠΊΠΎΠ΄, ΡΠ°ΠΊ ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΠΈΡΡ ΡΡΡΠΎΠΊΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Β«ΡΠΈΡΡΡΡ
Β» ΠΏΠ»ΡΡΠ°Ρ
. Β«ΠΠΎ ΠΊΠ°ΠΊ ΠΆΠ΅ Π±ΡΡΡ Ρ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ΠΎΡΡΡΡ?Β» β ΡΠΏΡΠΎΡΠΈΡΠ΅ Π²Ρ, ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠ°Π²Ρ. ΠΠΈΠΊΠ°ΠΊ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΎΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ Π΄Π»Ρ 32 ΠΈ 64 Π±ΠΈΡΠ½ΡΡ
Π²Π΅ΡΡΠΈΠΉ (ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ΄ Β«Any CPUΒ»). Π’Π°ΠΊΠΎΠ²Π° ΡΠ°ΡΠΏΠ»Π°ΡΠ° Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π‘++. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΈΠΊΡ ΠΈΠ· ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ΅Π³ΠΎ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
β’ /clr β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈ Π½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°.
β’ /Ρlr:pure β Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ) ΠΊΠΎΠ΄, Π² ΡΠΎΠΉ ΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π² Π‘#-ΡΠ±ΠΎΡΠΊΠ°Ρ
ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ unsafe.
β’ /clr:safe β Π’ΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ½Π°Π»ΠΎΠ³ β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ C#-ΡΠ±ΠΎΡΠΊΠΈ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ unsafe.
β’ /clr:oldSyntax β Π°Π½Π°Π»ΠΎΠ³ /clr, ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°ΡΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
ΠΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ?
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄Π»Ρ Π‘# ΠΈ C++/CLI.
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°
public sealed class Class1 : Class2
public ref class Class1 sealed : Class2
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ
public struct Class1 : IEquatable
public value class Class1 : IEquatable
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
public interface ISomeInterface
public interface class ISomeInterface
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Π C++/CLI Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«^Β» Π²ΠΌΠ΅ΡΡΠΎ Β«*Β». ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΡΠΎΠ±Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠΎΠΌ Π½Π°Π΄ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π½Π°Π΄ΠΎ. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΡΡΠ΅ΠΊΠ°:
Object obj();
ΠΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΡ
IDisposable (ΡΠ΅ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΏΠΎΠ·ΠΆΠ΅) Π»ΠΈΠ±ΠΎ Π΄Π»Ρ value-ΡΠΈΠΏΠΎΠ². ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π² ΠΏΠ»Π°Π½Π΅ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ value-ΡΠΈΠΏΠΎΠ² Π‘++/CLI Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ, ΡΠ΅ΠΌ C#, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ boxing/unboxing ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΠ΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΠΌΠ΅ΡΠΎΠ΄
void Method( int byValue, ref int byRef, out int outValue);
void Method( int byValue, int %byRef, [ out ] int %outValue);
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° IDisposable
protected virtual void Dispose( bool disposing)
<
if (disposing)
<
//release managed resources
>
//release unmanaged resources
>
Class1()
<
//release managed resources
//ΠΠ½Π°Π»ΠΎΠ³ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
!Class1()
<
//release unmanaged resources
>
>
Π§ΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ Π·Π° ΠΊΠ°Π΄ΡΠΎΠΌ?
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π² ΠΎΠ΄Π½Ρ ΡΡΠ°ΡΡΡ Π²ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ. ΠΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΊΠ°ΠΊ:
β’ Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ², ΡΠ²ΠΎΠΉΡΡΠ², ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, foreach ΠΈ ΠΏΡΠΎΡΠ΅Π΅
β’ ΠΠΎΠ½Π³Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠΌ
β’ Π§ΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΈ Π½Π΅Ρ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅ΡΡΡ Π² Π‘# ΠΈ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ C++
β’ ΠΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΎ ΡΠ±ΠΎΡΠΊΠ°ΠΌΠΈ Π‘++/CLI
β’ ΠΠΎΠΏΡΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΠ³Π΄Π° ΠΈ Π² ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠΈΠ³ΡΡΡ? ΠΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΏΠΎΡΠ΅ΡΡΡΡ?