2009-05-25 6 views
2

Je sais que je peux attribuer une valeur spécifique à un flotteur en faisantnombre est jeté correctement dans .NET

float y = 4.5f; 

Je veux faire la même chose, sauf un octet. Comment puis-je faire cela? J'ai vérifié la documentation MSDN et ne trouve rien de lié à cela. Aussi, comment s'appelle-t-il?

Merci,

[Modifier]

Pour plus de clarté le code que je utilise tout ceci est

byte myByte = a==b?1:0; 

et l'erreur que je reçois est

Impossible convertir implicitement le type 'int' en 'octet?'. Une conversion explicite existe (vous manque un casting?)

Solution

byte myByte = (byte)(a==b?1:0); 
+0

je qualifierais qu'un « littéral », pas un casting - rien casting vous êtes –

Répondre

12

Les byte, sbyte, short et ushort types de données ne sont pas désignés suffixes. Cependant, un littéral entier peut être affecté à des variables de ces types de données et sera implicitement converti, en supposant que la valeur est appropriée pour le stockage dans la variable. Pour le compte rendu ici sont les littéraux définis en C#:

uint: U or u 
long: L or l 
ulong: UL or ul 
float: F or f 
decimal: M or m 
+0

Merci, je ne savais pas le suffixe terme, si je connu le lien de Fredrik à l'autre poste SO aurait été # 1 –

1

notation Hex:

octet b = 0xff;

+0

Pourrait également être interprété comme un octet signé. –

+0

Quelle est la différence entre 0xff et 255? –

+0

SByte foo = 0xFF; // Définit foo sur -1. –

2

Je voudrais juste utiliser un casting.

// Okay 
Byte data = (Byte) 57; 

// Error (but I don't know if it is a compiler error or a runtime error) 
Byte data = (Byte) -17; 

Ou d'introduire une constante.

// Okay 
const Byte foo = 57; 
Byte data = foo; 

// Compiler Error 
const Byte foo = -17; 
Byte data = foo; 
+1

Il n'y a vraiment pas besoin d'un casting ici ... –

+0

Pas vraiment nécessaire tant que la valeur est inférieure à 256, sauf si vous tapez 'var' pour utiliser l'inférence de type. –

+0

@Arjan, dans ma situation c'est: byte myByte = a == b? 1: 0; et j'ai besoin d'un casting. –

2

Selon this post, octet n'a pas un tel suffixe.

2

Vous n'avez pas besoin d'un suffixe lors de la définition d'un octet:

byte b = 1; 

Vous avez juste besoin de faire en sorte que votre valeur est comprise entre 0 et 255.

MSDN fait référence à l'utilisation du F comme un 'suffixe', forçant un type littéral.

Voir l'article suivant à C-sharp Online pour plus d'informations

Questions connexes