Conversions de pointeur (Guide de programmation C#)
Le tableau suivant répertorie les conversions implicites prédéfinies de pointeurs. Des conversions implicites peuvent avoir lieu dans de nombreuses situations, notamment lors de l'appel de méthodes et de la définition d'instructions d'assignation.
Conversions de pointeur implicites
From |
Pour |
---|---|
Tout type de pointeur |
void* |
null |
Tout type de pointeur |
La conversion de pointeur explicite est utilisée pour effectuer des conversions, pour lesquelles il n'existe aucune conversion implicite, à l'aide d'une expression de cast. Le tableau suivant répertorie ces conversions explicites.
Conversions de pointeur explicites
From |
Pour |
---|---|
Tout type de pointeur |
Tout autre type de pointeur |
sbyte, byte, short, ushort, int, uint, long ou ulong |
Tout type de pointeur |
Tout type de pointeur |
sbyte, byte, short, ushort, int, uint, long ou ulong |
Exemple
Dans l'exemple suivant, un pointeur vers int est converti en un pointeur vers byte. Notez que le pointeur pointe vers l'octet adressé le plus bas de la variable. Lorsque vous incrémentez successivement le résultat, jusqu'à la taille de int (4 octets), vous pouvez afficher les octets restants de la variable.
// compile with: /unsafe
class ClassConvert
{
static void Main()
{
int number = 1024;
unsafe
{
// Convert to byte:
byte* p = (byte*)&number;
System.Console.Write("The 4 bytes of the integer:");
// Display the 4 bytes of the int variable:
for (int i = 0 ; i < sizeof(int) ; ++i)
{
System.Console.Write(" {0:X2}", *p);
// Increment the pointer:
p++;
}
System.Console.WriteLine();
System.Console.WriteLine("The value of the integer: {0}", number);
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
}
/* Output:
The 4 bytes of the integer: 00 04 00 00
The value of the integer: 1024
*/
Voir aussi
Référence
Expressions de pointeur (Guide de programmation C#)
Types pointeur (Guide de programmation C#)
fixed, instruction (référence C#)