Aracılığıyla paylaş


C++/CLI'da Sıralamaya Genel Bakış

Karma modda, bazen verilerinizi yerel ve yönetilen türler arasında hazırlamanız gerekir. Hazırlama kitaplığı, verileri basit bir şekilde hazırlamanıza ve dönüştürmenize yardımcı olur. Sıralama kitaplığı, bir dizi işlevden ve ortak türler için sıralama gerçekleştiren bir marshal_context sınıftan oluşur. Kitaplık, Visual Studio sürümünüz için include/msclr dizinindeki şu üst bilgilerde tanımlanır:

Üst bilgi Tanım
marshal.h marshal_context sınıf ve bağlamsız hazırlama işlevleri
marshal_atl.h ATL türlerini hazırlama işlevleri
marshal_cppstd.h Standart C++ türlerini hazırlama işlevleri
marshal_windows.h Windows türlerini hazırlama işlevleri

Msclr klasörünün varsayılan yolu, sahip olduğunuz sürüme ve derleme numarasına bağlı olarak aşağıdaki gibidir:

C:\\Program Files (x86)\\Microsoft Visual Studio\\Preview\\Enterprise\\VC\\Tools\\MSVC\\14.15.26528\\include\\msclr

Marshal_context Sınıfı ile veya sınıfı olmadan hazırlama kitaplığını kullanabilirsiniz. Bazı dönüştürmeler bir bağlam gerektirir. Diğer dönüştürmeler marshal_as işlevi kullanılarak uygulanabilir. Aşağıdaki tabloda desteklenen geçerli dönüştürmeler, bağlam gerekip gerekmediği ve hangi hazırlama dosyasını eklemeniz gerekip gerekmediği listelenmektedir:

Kimden türü Yazacak Marshal yöntemi Dosyayı dahil et
System::String^ const char * Marshal_context marshal.h
const char * System::String^ marshal_as marshal.h
Char* System::String^ marshal_as marshal.h
System::String^ const wchar_t* Marshal_context marshal.h
const wchar_t * System::String^ marshal_as marshal.h
Wchar_t* System::String^ marshal_as marshal.h
Sistem::IntPtr IŞLEMEK marshal_as marshal_windows.h
IŞLEMEK Sistem::IntPtr marshal_as marshal_windows.h
System::String^ BSTR Marshal_context marshal_windows.h
BSTR System::String^ marshal_as marshal.h
System::String^ bstr_t marshal_as marshal_windows.h
bstr_t System::String^ marshal_as marshal_windows.h
System::String^ std::string marshal_as marshal_cppstd.h
std::string System::String^ marshal_as marshal_cppstd.h
System::String^ std::wstring marshal_as marshal_cppstd.h
std::wstring System::String^ marshal_as marshal_cppstd.h
System::String^ CStringT<karakteri> marshal_as marshal_atl.h
CStringT<karakteri> System::String^ marshal_as marshal_atl.h
System::String^ CStringT<wchar_t> marshal_as marshal_atl.h
CStringT<wchar_t> System::String^ marshal_as marshal_atl.h
System::String^ Ccombstr marshal_as marshal_atl.h
Ccombstr System::String^ marshal_as marshal_atl.h

Hazırlama, yalnızca yönetilen veri türlerinden yerel veri türlerine sıraladığınızda bir bağlam gerektirir ve dönüştürdüğünüz yerel türün otomatik temizleme için bir yıkıcısı yoktur. Hazırlama bağlamı, kendi yıkıcısında ayrılan yerel veri türünü yok eder. Bu nedenle, bağlam gerektiren dönüştürmeler yalnızca bağlam silinene kadar geçerli olur. Sıralanmış değerleri kaydetmek için değerleri kendi değişkenlerinize kopyalamanız gerekir.

Dekont

Dizenize s katıştırdıysanız NULL, dizenin sıralanması garanti edilmez. Katıştırılmış NULLs dizenin kesilmesine neden olabilir veya korunabilir.

Bu örnekte, msclr dizininin ekleme üst bilgisi bildirimine nasıl dahil edilmesi gösterilmektedir:

#include "msclr\marshal_cppstd.h"

Kendi sıralama türlerinizi ekleyebilmeniz için sıralama kitaplığı genişletilebilir. Hazırlama kitaplığını genişletme hakkında daha fazla bilgi için bkz . Nasıl yapılır: Hazırlama Kitaplığını Genişletme.

Ayrıca bkz.

C++ Support Library
Nasıl yapılır: Hazırlama Kitaplığını Genişletme