Recherche…


Type de référence immuable - chaîne

// assign string from a string literal
string s = "hello";

// assign string from an array of characters
char[] chars = new char[] { 'h', 'e', 'l', 'l', 'o' };
string s = new string(chars, 0, chars.Length);

// assign string from a char pointer, derived from a string
string s;
unsafe
{
    fixed (char* charPointer = "hello")
    {
        s = new string(charPointer);
    }
}

Type de valeur - char

// single character s
char c = 's';

// character s: casted from integer value
char c = (char)115;

// unicode character: single character s
char c = '\u0073';

// unicode character: smiley face
char c = '\u263a';

Type de valeur - short, int, long (entiers signés 16 bits, 32 bits, 64 bits)

// assigning a signed short to its minimum value
short s = -32768;

// assigning a signed short to its maximum value
short s = 32767;

// assigning a signed int to its minimum value
int i = -2147483648;

// assigning a signed int to its maximum value
int i = 2147483647;

// assigning a signed long to its minimum value (note the long postfix)
long l = -9223372036854775808L;

// assigning a signed long to its maximum value (note the long postfix)
long l = 9223372036854775807L;

Il est également possible de rendre ces types nullables, ce qui signifie que, en plus des valeurs habituelles, null peut également être affecté. Si une variable de type nullable n'est pas initialisée, elle sera nulle au lieu de 0. Les types nullables sont marqués en ajoutant un point d'interrogation (?) Après le type.

int a; //This is now 0.
int? b; //This is now null.

Type de valeur - ushort, uint, ulong (entiers 16 bits non signés, 32 bits, 64 bits)

// assigning an unsigned short to its minimum value
ushort s = 0;

// assigning an unsigned short to its maximum value
ushort s = 65535;

// assigning an unsigned int to its minimum value
uint i = 0;

// assigning an unsigned int to its maximum value
uint i = 4294967295;

// assigning an unsigned long to its minimum value (note the unsigned long postfix)
ulong l = 0UL;

// assigning an unsigned long to its maximum value (note the unsigned long postfix)
ulong l = 18446744073709551615UL;

Il est également possible de rendre ces types nullables, ce qui signifie que, en plus des valeurs habituelles, null peut également être affecté. Si une variable de type nullable n'est pas initialisée, elle sera nulle au lieu de 0. Les types nullables sont marqués en ajoutant un point d'interrogation (?) Après le type.

uint a; //This is now 0.
uint? b; //This is now null.

Type de valeur - bool

// default value of boolean is false
bool b;
//default value of nullable boolean is null
bool? z;
b = true;
if(b) {
    Console.WriteLine("Boolean has true value");
}

Le mot clé bool est un alias de System.Boolean. Il est utilisé pour déclarer des variables pour stocker les valeurs booléennes, true et false .

Comparaisons avec les types de valeur encadrés

Si des types de valeur sont affectés à des variables de type object ils sont encadrés - la valeur est stockée dans une instance de System.Object . Cela peut entraîner des conséquences imprévues lors de la comparaison de valeurs avec == , par exemple:

object left = (int)1;  // int in an object box
object right = (int)1; // int in an object box

var comparison1 = left == right;      // false

Cela peut être évité en utilisant la méthode Equals surchargée, qui donnera le résultat attendu.

var comparison2 = left.Equals(right); // true

Alternativement, on pourrait faire la même chose en désencapsulant les variables left et right afin de comparer les valeurs int :

var comparison3 = (int)left == (int)right; // true

Conversion de types de valeur encadrés

Les types de valeur encadrés ne peuvent être déballés que dans leur Type origine, même si une conversion des deux Type est valide, par exemple:

object boxedInt = (int)1; // int boxed in an object

long unboxedInt1 = (long)boxedInt; // invalid cast

Cela peut être évité en déballant d'abord dans le Type origine, par exemple:

long unboxedInt2 = (long)(int)boxedInt; // valid


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow