Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

C Sharp – Transtypage opérateur ( )

Programmation en C# (C Sharp)



Les conversions de type en C# sont identiques pour les types numériques aux conversions utilisées
dans tout langage fortement typé. Toutefois C# pratique la conversion implicite lorsque celle-ci est possible.

Transtypage implicite en C# d’un entier int en float, double, … :

  • int n = 1234;
  • float x1 = n ;
  • double x2 = n ;
  • double x3 = x1 ;
  • long p = n ;

Si vous voulez malgré tout, convertir explicitement une valeur immédiate ou une valeur contenue dans une variable il faut utiliser l’opérateur de transtypage noté ( ).

Nous pouvons par exemple nous servir du transtypage explicite dans une énumération :

La variable etat de type etatCivil  initialisée avec l’une des constantes du type :

enum etatCivil    { marie=1,    pacs=2,        veuf=4,       divorce=8,    celibataire=16 }
etatCivil etat = etatCivil.veuf;  

On peut obtenir la valeur entière associée à etat (appelée rang de la constante) en transtypant la variable etat :

int rangEtat = (int)etat; 


using System;
public enum etatCivil        
{
marie=1,    pacs=2,        veuf=4,       divorce=8,    celibataire=16, 
// =(1)           =(10)             =(100)          =(1000)        =(10000)
seul    =     veuf | divorce | celibataire,  // valeur binaire
// =28            car :  4(100) | 8(1000) | 16(10000) = 28(11100)
couple    =     marie| pacs // valeur binaire
// =3            car :  0(00) | 2(10)  = 3(11)

}

class Exercice
{
public static void Main( ) 
{
etatCivil etat = etatCivil.veuf;  
int rangEtat = (int)etat; // transtypage enum --> int
etatCivil etatsuivant =(etatCivil)(rangEtat*2);  // transtypage int --> enum
Console.WriteLine("etat : "+etat );
Console.WriteLine("rangetat : "+rangEtat );
Console.WriteLine("etatsuivant : "+etatsuivant );
Console.WriteLine("rangetatsuivant : "+(int)etatsuivant ); // transtypage enum --> int
etat = etatCivil.seul;  
Console.WriteLine("etat : "+etat );
Console.WriteLine("rangetat : "+(int)etat );

byte x=5, y=10, z ;  // entier non signé sur 8 bits [0..255]
z = (byte)(x+y) ; // transtypage explicite obligatoire car l'addition renvoie un int par défaut
Console.WriteLine("z = "+z );

char car= '\u2058' ; // un char est codé sur 16 bits (unicode);
int val1 = car ; // conversion implicite d'un char en son code unicode 
Console.WriteLine("val1 =  "+val1 );
byte val2 = (byte)car ; // transtypage explicite pour 8 bits (attention perte d'information possible) 
Console.WriteLine("val2 =  "+val2 );

Console.ReadLine();
}
}



Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More