2009-02-26 13 views

Respuesta

38

En C# puede usar la palabra clave predeterminada para determinar los valores predeterminados.

Por ejemplo:

 
default(bool) 
default(int) 
default(int?) 
+1

Buena forma "genérica" ​​de obtener la información. Debe ser aceptado como respuesta! –

3

Depende del tipo de la variable. Si el tipo puede ser nulo, su valor predeterminado será nulo. Los tipos anulables comenzarán nulos.

tipos
  • complejas (String, StringBuilder) = null
  • tipos numéricos (int, decimal, doble, byte) = 0
  • Boolean = false
  • DateTime = DateTime.MinValue (01/01/0001 00:00:00)

Usted puede establecer un valor inicial usando:

cadena s1 = " prueba";

Dim s1 As String = "prueba"

24

¿Quieres decir una variable (método)? o un campo (en una instancia o tipo)?

Para una variable de nivel de método (en C# como mínimo) es irrelevante, ya que "asignación definitiva" significa que debe darle un valor antes de poder leerlo.

predeterminado campos para el estado a nivel de bit de cero:

  • para los tipos de referencia (incluyendo cadena) que significa nula
  • para Nullable<T> (int? etc) que significa nula
  • para valores numéricos que significa 0
  • para enumeraciones que significa 0 incluso si no hay enum de 0 valores definidos
  • para bools que significa f alse
  • de DateTime, que significa lo mismo que MinValue
  • para otras estructuras, que tendrá que comprobar su documentación, pero va a ser un (esperemos sensible) "/ vacío cero" valor
12

esto se puede encontrar en MSDN:

Visual Basic .NET define los siguientes tipos primitivos:

El tipos de valor integral byte (1-byte entero sin signo), Short (2-byte entero con signo), Integer (4 -número entero con signo) y Largo (entero con signo de 8 bytes). Estos tipos se asignan a System.Byte, System.Int16, System.Int32 y System.Int64, respectivamente. El valor predeterminado de un tipo integral es equivalente al literal 0.

Los valores de coma flotante son simples (coma flotante de 4 bytes) y doble (coma flotante de 8 bytes). Estos tipos se asignan a System.Single y System.Double, respectivamente. El valor predeterminado de un tipo de punto flotante es equivalente al literal 0.

El tipo Decimal (valor decimal de 16 bytes), que se asigna a System.Decimal. El valor predeterminado de decimal es equivalente al literal 0D.

Tipo de valor booleano, que representa un valor de verdad, generalmente el resultado de una operación relacional o lógica. El literal es del tipo System.Boolean. El valor predeterminado del tipo booleano es equivalente al literal False.

Tipo de valor de fecha, que representa una fecha y/o una hora y se asigna a System.DateTime. El valor predeterminado del tipo Fecha es equivalente al literal # 01/01/0001 12:00:00 AM #.

El tipo de valor Char, que representa un único carácter Unicode y se asigna a System.Char. El valor predeterminado del tipo Char es equivalente a la expresión constante ChrW (0).

El tipo de referencia de cadena, que representa una secuencia de caracteres Unicode y asigna a System.String. El valor predeterminado del tipo de cadena es una referencia nula.

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

+0

Gracias a todos .. Mi problema ha sido resuelto. Tus respuestas son apreciadas. –

4

La especificación de lenguaje C# indica que para tipos de valor el valor por defecto es el mismo que el asignado por el constructor por defecto y para tipos de referencia es nulo:

Así los valores de constructor predeterminados de los tipos de valor son:

Para todos los tipos simples, el valor predeterminado valor es el valor producido por un patrón de bits de todo ceros:

  • Para sbyte, byte, short, ushort, int, uint, largo, y ulong, el valor predeterminado es 0.

  • Para char, el valor predeterminado es '\ x0000'. Para flotante, el valor predeterminado
    es 0.0f.

  • Para el doble, el valor predeterminado es 0.0d. Para decimal, el valor predeterminado es 0.0m. Para bool, el valor predeterminado es falso.

  • Para una enumeración-Typee, el valor predeterminado es 0.

  • para un tipo de estructura, el valor predeterminado es el valor producido por de ajustar todos los campos de tipo valor a su valor predeterminado y todos campos de tipo de referencia para anular.

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

La cadena no es un tipo de valor.

Cuestiones relacionadas