Outils pour utilisateurs

Outils du site


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

#include <msclr\marshal.h>
 
const char * message = "test";
String^ managed = marshal_as<String^>( message );
lang/csharp/clr.1544201666.txt.gz · Dernière modification : 2018/12/07 17:54 de root