web-dev-qa-db-fra.com

valeur par défaut d'une variable au moment de la déclaration en C # et VB?

Quelqu'un peut-il me dire quelle est la valeur par défaut d'une variable au moment de la déclaration en C # et vb ??

21
Khan

En c #, vous pouvez utiliser le mot-clé par défaut pour déterminer les valeurs par défaut.

Par exemple:

 par défaut (booléen) 
 par défaut (int) 
 par défaut (int?) 
48
Chris

Voulez-vous dire une variable (méthode)? ou un champ (sur une instance ou un type)?

Pour une variable au niveau de la méthode (au moins en C #), cela n'a pas d'importance, car "affectation définie" signifie que vous devez lui donner une valeur avant de pouvoir lis le.

Les champs par défaut à l'état zéro au niveau du bit:

  • pour les types de référence (y compris la chaîne) qui signifie null
  • pour Nullable<T> (int? etc) qui signifie null
  • pour les chiffres, cela signifie 0
  • pour les énumérations qui signifie 0 même si aucune énumération à valeur 0 n'est définie
  • pour les bools qui signifie faux
  • pour DateTime, cela signifie la même chose que MinValue
  • pour les autres structures, vous devrez vérifier leur documentation, mais ce sera une valeur (espérons-le raisonnable) "zéro/vide"
24
Marc Gravell

Cela peut être trouvé dans MSDN:

Visual Basic .NET définit les types primitifs suivants:

Les types de valeur intégrale Byte (entier non signé de 1 octet), Short (entier signé de 2 octets), Integer (entier signé de 4 octets) et Long (entier signé de 8 octets). Ces types correspondent respectivement à System.Byte, System.Int16, System.Int32 et System.Int64. La valeur par défaut d'un type intégral équivaut au littéral 0.

Les types de valeur à virgule flottante Single (virgule flottante 4 octets) et Double (virgule flottante 8 octets). Ces types correspondent respectivement à System.Single et System.Double. La valeur par défaut d'un type à virgule flottante équivaut au littéral 0.

Le type Decimal (valeur décimale de 16 octets), qui correspond à System.Decimal. La valeur par défaut de decimal équivaut au littéral 0D.

Le type de valeur booléenne, qui représente une valeur de vérité, généralement le résultat d'une opération relationnelle ou logique. Le littéral est de type System.Boolean. La valeur par défaut du type booléen équivaut au littéral False.

Le type de valeur Date, qui représente une date et/ou une heure et correspond à System.DateTime. La valeur par défaut du type Date équivaut au littéral # 01/01/0001 12:00:00 AM #.

Le type de valeur Char, qui représente un seul caractère Unicode et correspond à System.Char. La valeur par défaut du type Char est équivalente à l'expression constante ChrW (0).

Le type de référence String, qui représente une séquence de caractères Unicode et correspond à System.String. La valeur par défaut du type String est une référence nulle.

http://msdn.Microsoft.com/en-us/library/aa711900.aspx

14
Billy

La spécification du langage C # indique que pour les types de valeur la valeur par défaut est la même que celle affectée par le constructeur par défaut et pour types de référence il est nul:

Ainsi, les valeurs de constructeur par défaut des types de valeur sont:

Pour tous les types simples, la valeur par défaut est la valeur produite par un motif de bits de tous les zéros:

  • Pour sbyte, byte, short, ushort, int, uint, long et ulong, la valeur par défaut est 0.

  • Pour char, la valeur par défaut est "\ x0000". Pour float, la valeur par défaut
    La valeur de est 0.0f.

  • Pour double, la valeur par défaut est 0,0d. Pour les décimales, la valeur par défaut est 0,0 m. Pour booléen, la valeur par défaut est false.

  • Pour un enum-typeE, la valeur par défaut est 0.

  • Pour un type struct, la valeur par défaut est la valeur produite en définissant tous les champs de type valeur sur leur valeur par défaut et tous les champs de type référence sur null.

http://msdn.Microsoft.com/en-us/library/aa691142 (v = VS.71) .aspx

La chaîne n'est pas un type valeur.

5
Four

Dépend du type de variable. Si le type peut être nul, sa valeur par défaut sera nulle. Les types Nullable commenceront tous par null.

  • Types complexes (String, StringBuilder) = null
  • Types numériques (entier, décimal, double, octet) = 0
  • Booléen = faux
  • DateTime = DateTime.MinValue (01/01/0001 00:00:00)

Vous pouvez définir une valeur initiale en utilisant:

string s1 = "test";

Dim s1 As String = "test"

4
Neil Bostrom