lang:csharp:clr
Ceci est une ancienne révision du document !
Table des matières
Syntaxe de C++/CLI
Les types C#
se postfixe avec un ^
et on utilise using namespace
à la place de using
pour faire la différence avec le C++
.
using namespace System::Threading; Mutex^ mutex;
Une classe est autorisée à utiliser les types C# si sa déclaration est précédée de ref
.
public ref class Carte {}
L'initialisation des variables statiques d'une classe doit se faire dans l'entête et l'allocation mémoire se faire avec un gcnew
.
public ref class Driver { static System::Collections::Generic::List<Carte^>^ cartes = gcnew System::Collections::Generic::List<Carte^>();
La notion de référence &
n'existe pas pour les objets managés.
C# => C++
Pointeurs
Managed C++/CLI Array Conversion Error Archive du 22/11/2018
- C#
CalcSumArray(new[] { 1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f }, 6);
- CLR
static float CalcSumArray(array<float>^ val, int length) { cli::pin_ptr<float> t = &val[0]; float* y = t; return SumArray(y, length); }
- C++
float SumArray(float* val, int length);
C++ => C#
string
char *pcertificate; String^ sCertificate; sCertificate = gcnew String(pcertificate);
struct
struct Argument { int age; char name[50]; } ;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public struct Argument { public int age; [MarshalAs(UnmanagedType.LPStr, SizeConst = 50)] public string name; // fixed char name[50]; // Autre possibilité }
lang/csharp/clr.1544455157.txt.gz · Dernière modification : 2018/12/10 16:19 de root